visual studio developer tools
DESCRIPTION
Visual Studio Developer Tools eğitiminden sonra, şirket içerisinde yaptığımız özet sunumTRANSCRIPT
![Page 1: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/1.jpg)
Visual Studio Developer Tools
Tema Mağazacılık BT Yazılım Geliştirme Departmanı
![Page 2: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/2.jpg)
İçerikStatic Code AnalysisCode MetricsProfilingIntelliTrace
![Page 3: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/6.jpg)
Static Code Analysis
Sorular???
![Page 7: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/10.jpg)
Depth of InheritanceBase class’ı her extend eden seviye için bir
artar
![Page 11: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/12.jpg)
Class CouplingBir sınıfın bağımlı olduğu her sınıf için bir
artar
![Page 13: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/16.jpg)
Code Metrics
Sorular???
![Page 17: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/20.jpg)
Profiling TipleriMemory profilingConcurrency profiling
![Page 21: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/21.jpg)
Profiling TipleriWindows uygulamalarıASP.NETUnit TestJavaScript
![Page 22: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/23.jpg)
Profiling
Sorular???
![Page 24: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/27.jpg)
IntelliTraceProduction ortamlarında KULLANILAMAZ.Sistem izleme amaçlı KULLANILAMAZ.
![Page 28: Visual Studio Developer Tools](https://reader033.vdocuments.site/reader033/viewer/2022061114/545ba8c0af795953128b5936/html5/thumbnails/28.jpg)
IntelliTrace
Sorular???