Visual Studio Developer Tools

Post on 02-Nov-2014

789 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Visual Studio Developer Tools eğitiminden sonra, şirket içerisinde yaptığımız özet sunum

Transcript

Visual Studio Developer Tools

Tema Mağazacılık BT Yazılım Geliştirme Departmanı

İçerikStatic Code AnalysisCode MetricsProfilingIntelliTrace

Static Code AnalysisCode review, akıl yordamıyla farkedilebilecek

hataları ya da iyileştirmeleri tespit amaçlı yapılır.

Static code analysis, standartlara oturtulabilecek durumları tespit etmeye ve ileride karşılaşacağımız problemlerin sayısını düşürmeye yarar.

Static code analysis, otomatikleştirilebilir.

Static Code AnalysisVisual Studio 2010 üzerinde, bir proje için

static code analysis özelliğini aktif hale getirme

Kural setlerinin tanımlanması ya da kendi kural setimizin oluşturulması

Proje üzerinde static code analysis çalıştırılması ve sonuçların incelenmesi

Uyarı ya da hatanın giderilmesi

Static Code AnalysisArka plandaki tüm işi FxCop yapmaktadır.Microsoft tarafından geliştirilmiştir.IDE içerisinde yapılabilen herşey ve daha

fazlası FxCop ile command line üzerinden yapılabilir.

Reflection yerine, Introspection tekniğini kullanmaktadır.

Introspection engine, mevcut kurallar ve custom rule geliştirmeye yarayan tüm araçlar [VS]/Team Tools/Static Analysis Tools/FxCop klasörü içerisinde bulunmaktadır.

Static Code Analysis

Sorular???

Code MetricsYazdığımız kodun yönetilebilirliği hakkında

bazı bilgiler edinmemizi sağlar.Maintainability IndexCyclomatic ComplexityClass CouplingLines of CodeDepth of Inheritance (*)Otomatik üretilen kodlar bu değerlendirme

dışında kalır.

Maintainability Index0 – 10 arası düşük yönetilebilirlik10 – 20 arası orta yönetilebilirlik20 – 100 arası yüksek yönetilebilirlik

Cyclomatic ComplexityKodun yapısal karmaşıklığını ifade eder.Program içerisinde oluşan farklı pathlerin

hesaplanması ile bulunur.if-else, switch, while, for, foreach gibi kontrol

statementların her birisinin içerisindeki her mantıksal kontrol, +1 karmaşıklık ifade eder.

Kod ne kadar karmaşık ise, o kod için yazılacak unit test sayısı da o kadar fazla olmalıdır.

Depth of InheritanceBase class’ı her extend eden seviye için bir

artar

Depth of InheritanceRakam büyüdükçe, anlaşılırlık

zorlaşmaktadır.Namespace ve proje bazındaki değer,

içerisinde barındırdığı en derin hiyerarşiye eşittir.

Class CouplingBir sınıfın bağımlı olduğu her sınıf için bir

artar

Class CouplingPrimitive tipler (int, double vs) ve built-in

yapılar (string, object vs) için hesaplanmaz.İyi dizayn edilmiş bir yazılım, düşük class

coupling değerlerine sahip olmalıdır.Yüksek class coupling değerlerine sahip

yazılımı, içerdiği bağımlılıklardan dolayı başka yerlerde kullanmak çok zordur.

Lines of CodeYaklaşık kod satırı sayısını ifade eder.Kod dosyasındaki sayıyı değil, IL kodu

içerisindeki satır sayısına göre hesaplanır.Boşluk, comment, parantez, tanımlama

(değişken, method, namespace) bu sayıya dahil edilmez.

Bir sınıf ya da method üzerinde kod satırının yüksek olması, o parçanın çok fazla iş yaptığına ve bölünmesi gerektiğine işaret eder.

Code MetricsHer bir kod metriği için, statik kod analizi

kuralı mevcuttur. Bu kurallar, proje için aktif hale getirilerek her build esnasında kontrol edilmesi sağlanabilir.

Code Metrics

Sorular???

ProfilingProfiling; bir uygulamanın belli

davranışlarının izlenmesi ve bazı metriklerin toplanması sürecine verilen isimdir.

Genellikle, yavaş çalışan ya da yüksek bellek tüketen uygulamaları incelemek için kullanılır.

Genellikle hotspotları tespit etme amacıyla kullanılır.

Hotspot; bir uygulamada uzun süre ya da sıklıkla çalışan kısımlara verilen isimdir.

Visual Studio ProfilerPerformance SessionSampling vs InstrumentationSampling; belli aralıklar ile uzun süre

boyunca rastgele veri toplama ve bu veriyi inceleme suretiyle yapılan profiling türüdür.

Instrumentation; performans problemi yaşanan hedef noktalar için kısa süreli, fakat tüm veriyi toplama ve inceleme türüdür.

Instrumentation esnasında, hedef assemblyler üzerinde değişiklik yapılır.

Profiling YaklaşımıHangi tür yaklaşım sergileneceği (sampling vs

instrumentation) ve bu esnada hangi verilerin toplanacağı belirlenir.

Uygulama çalıştırılarak veri toplanırToplanan veri analiz edilirTespit edilen noktalardaki problemler giderilir.Değiştirilen parça için tekrar profiling çalıştırılır

ve değişiklik olup olmadığı tespit edilir.Toplanan veriler karşılaştırılarak performans

artış raporu hazırlanır.

Profiling TipleriMemory profilingConcurrency profiling

Profiling TipleriWindows uygulamalarıASP.NETUnit TestJavaScript

Dikkat Edilmesi GerekenlerInstrumentation uygulanan projede aynı

zamanda code coverage açık olmamalı.ASP.NET 2.0 ve üzerinde profiling

çalıştırılabilir.Remote makinalar üzerinde profiling

çalıştırılamaz. Profile edilecek uygulama ile aynı yerde çalıştırılması gerekir.

Profile edilecek makinada Visual Studio kurulmak istenmiyor ise, command line araçları kullanılabilir.

Performance session, başka bir ortamda çalıştırılamaz. CPU ve ortam spesifik değerler barındırmaktadır.

Profiling

Sorular???

IntelliTraceTest esnasında karşılaşılan bir hatanın,

developer ortamında tekrar üretilmesi mümkün olmayabilir.

Genellikle developer, «bu benim makinamda çalışıyor» diyerek bu bugı sonlandırır. (no repro)

Eğer hata hakkında detaylı bir log bulunmuyor ise, bu hata sonsuza kadar tester-developer arasında gidip gelebilir.

IntelliTraceVisual Studio debugging esnasında,

breakpoint koyarız, adım adım ilerleyerek değişkenlerin durumunu ve uygulamanın davranışını izleriz.

Hatayı yakaladığımız, fakat yanlışlıkla es geçtiğimiz zamanda, geri dönmek mümkün olmayabilir, bu durumda debugging işlemini en baştan yapmak zorunda kalırız.

IntelliTraceIntelliTrace, çalışan uygulama hakkında arka

planda bazı veriler toplar.Bu veriler, uygulamanın çalışma esnasında

hangi veriler ile hangi pathlerden geçtiği gibi bir çok bilgi barındırabilir.

Böylelikle, geçmişte yaşanan bir hatayı şu anda, ileri-geri oynatarak debug edebiliriz.

Normal debug esnasında erişemediğimiz noktalar hakkında da bilgi toplar. (file operasyonları, registry operasyonları vs)

IntelliTraceProduction ortamlarında KULLANILAMAZ.Sistem izleme amaçlı KULLANILAMAZ.

IntelliTrace

Sorular???

top related