28
Visual Studio Developer Tools Tema Mağazacılık BT Yazılım Geliştirme Departmanı

Visual Studio Developer Tools

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Visual Studio Developer Tools

Visual Studio Developer Tools

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

Page 2: Visual Studio Developer Tools

İçerikStatic Code AnalysisCode MetricsProfilingIntelliTrace

Page 3: Visual Studio Developer Tools

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.

Page 4: Visual Studio Developer Tools

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

Page 5: Visual Studio Developer Tools

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.

Page 6: Visual Studio Developer Tools

Static Code Analysis

Sorular???

Page 7: Visual Studio Developer Tools

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.

Page 8: Visual Studio Developer Tools

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

Page 9: Visual Studio Developer Tools

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.

Page 10: Visual Studio Developer Tools

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

artar

Page 11: Visual Studio Developer Tools

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.

Page 12: Visual Studio Developer Tools

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

artar

Page 13: Visual Studio Developer Tools

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.

Page 14: Visual Studio Developer Tools

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.

Page 15: Visual Studio Developer Tools

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.

Page 16: Visual Studio Developer Tools

Code Metrics

Sorular???

Page 17: Visual Studio Developer Tools

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.

Page 18: Visual Studio Developer Tools

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.

Page 19: Visual Studio Developer Tools

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.

Page 20: Visual Studio Developer Tools

Profiling TipleriMemory profilingConcurrency profiling

Page 21: Visual Studio Developer Tools

Profiling TipleriWindows uygulamalarıASP.NETUnit TestJavaScript

Page 22: Visual Studio Developer Tools

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.

Page 23: Visual Studio Developer Tools

Profiling

Sorular???

Page 24: Visual Studio Developer Tools

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.

Page 25: Visual Studio Developer Tools

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.

Page 26: Visual Studio Developer Tools

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)

Page 27: Visual Studio Developer Tools

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

Page 28: Visual Studio Developer Tools

IntelliTrace

Sorular???