C # için hangi statik analiz araçları mevcuttur? [kapalı]


174

C # koduna karşı statik analiz için hangi araçlar mevcuttur? FxCop ve StyleCop'u biliyorum. Başkaları var mı? Daha önce NStatic ile karşılaştım ama sonsuza kadar görünen şey için geliştiriliyordu - gördüğümden çok kaygan görünüyor, bu yüzden günün ışığını görmesi güzel olurdu.

Aynı çizgiler boyunca (bu öncelikle statik analize olan ilgimdir), çoklu iş parçacığı sorunları (kilitlenme, yarış koşulları, vb.) İçin kod test etme araçları da biraz kıttır. Typemock Racer yeni fırladı bu yüzden ona bakacağım. Bunun ötesinde bir şey var mı?

Kullandığınız araçlar hakkında gerçek hayattaki görüşler takdir edilmektedir.


@IraBaxter Meta'da bu soru hakkında bir tartışmaya başladım ve sizi bu sorunun neden silinmemesi gerektiğine dair argümanlarınızı söylemeye davet ediyorum.

Yanıtlar:


341

Kod ihlali algılama Araçları:

  • Fxcop , Microsoft tarafından mükemmel bir araç. .Net framework yönergelerine uygunluğu kontrol edin.

    Ekim 2010'u düzenle: Artık bağımsız bir indirme olarak mevcut değil. Artık Windows SDK'ya dahil edildi ve kurulumdan sonra Program Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe içinde bulunabilir.

    Şubat 2018'i düzenleyin : Bu işlev artık Visual Studio 2012 ve sonraki sürümlere Kod Analizi olarak entegre edilmiştir

  • Kod kaynağı analizine dayanan Clocksharp (C # 2.0'a)

  • Mono.Gendarme , Fxcop'a benzer, ancak açık kaynak lisansına sahip ( Mono.Cecil tabanlı )

  • Smokey dayalı FxCop ve Jandarma benzer, Mono.Cecil . Artık geliştirilmiyor, ana geliştirici şimdi Jandarma ekibi ile çalışıyor.

  • C # için Coverity Prevent ™ , ticari ürün

  • PRQA KG · C # , ticari ürün

  • PVS-Studio , ticari ürün

  • CAT.NET , güvenlik kusurlarının tanımlanmasına yardımcı olan görsel stüdyo eklentisi Edit Kasım 2019: Link öldü.

  • CodeIt.Right

  • spec #

  • Pex

  • SonarQube , FOSS ve Ticari seçenekler daha temiz ve daha güvenli kod yazmayı desteklemek için.

Kalite Metrik Araçları:

  • NDepend , harika görsel araç. Kod metrikleri, kurallar, fark, birleştirme ve bağımlılık çalışmaları için kullanışlıdır.
  • Nitriq , ücretsiz, kendi metriklerinizi / kısıtlamalarınızı, güzel görselleştirmelerinizi kolayca yazabilir. Şubat 2018'i düzenleyin: indirme bağlantıları artık ölü. Düzenleme 17 Haziran 2019: Bağlantılar ölü değil.
  • Kod kaynağı analizine dayanan RSM Squared
  • C # Metrikleri , C # 'ın tam çözümlemesini kullanma
  • SourceMonitor , zaman zaman güncelleme alan eski bir araç
  • Kod Ölçümleri , bir Reflektör Eklenti
  • Vil , .NET 2.0'ı desteklemeyen eski bir araç. Ocak 2018'i düzenle: Bağlantı şimdi ölü

Stil Araçlarını Kontrol Etme:

  • StyleCop , Microsoft aracı (Visual Studio'nun içinden çalıştırılır veya bir MSBuild projesine entegre edilir). Visual Studio 2015 ve C # 6.0 için bir uzantı olarak da mevcuttur
  • Agent Smith , ReSharper için kod stili doğrulama eklentisi

Çoğaltma Algılama:

  • maymun , kaynak koduna göre. Bol dilde çalışır.
  • CloneDR , parametreli klonları yalnızca dil sınırlarında algılar (ayrıca C # dışındaki birçok dili de işler)
  • Klon Dedektif bir Visual Studio eklentisi. ( ConQAT kullanır dahili olarak )
  • Atomiq , kaynak kodu, bol dil, serin "tekerlek" görselleştirme dayalı

Genel Yeniden Düzenleme araçları

  • ReSharper - Çoğunlukla harika C # kodu analizi ve yeniden düzenleme özellikleri

4
FxCop ile ilgili MSDN sayfasına bakın : msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCop, yönetilen kod derlemelerini (.NET Framework ortak dil çalışma zamanını hedefleyen kod) analiz eden bir uygulamadır ve olası tasarım, yerelleştirme, performans ve güvenlik iyileştirmeleri gibi derlemeler hakkındaki bilgileri raporlar. "
Sarah Vessels

FxCop bağlantısı Microsoft sitesinden kaldırıldı. İşte FxCop 10.0 "indir": microsoft.com/downloads/…
ulrichb

Bu Simian mı: harukizaemon.com/simian/index.html ? (bağlantı koptu). Ayrıca sadece .NET 1.1 gibi görünüyor.
Theraot

@Theraot Teşekkürler, URL'yi değiştirdim. .NET sürümü ile ilgili olarak, Simian Java 5 üzerinde .NET 1.1 üzerinde çalışabilir, ancak bu .NET'in diğer sürümlerinde çoğaltmayı algıladığı anlamına gelmez
Julien Hoarau

Nitriq artık mevcut görünmüyor. İndirme bağlantısı (şimdi Telerik'in bir parçası olan NimblePros'a yönlendiriyor) "Üzgünüz, artık Nitriq sunmuyoruz" diyor
Narayana

7

Aracı NDepend olarak kote edilir Kalite Metrik Araçları ama hemen hemen aynı zamanda bir olduğunu Kod ihlali algılama aracı. Feragatname: Aracın geliştiricilerinden biriyim

NDepend ile, LINQ Sorguları (CQLinq dediğimiz) üzerine Kod Kuralı yazılabilir . Varsayılan olarak 200'den fazla CQLinq kodu kuralı önerilmiştir. CQLinq'in gücü, bir kod kuralı yazmanın ve hemen sonuç almanın basit olmasıdır . Tesislerin eşleşen kod öğelerine göz atması önerilir. Örneğin:

CQLinq kod kuralı

Bunun yanı sıra, NDepend diğer birçok statik analizle birlikte geliyor . Bunlar:


Son birkaç haftada NDepend'i deneme fırsatım oldu - büyük hayranım, elimden geldiğinde geliştirici lisansı alacak. :) Çalışmanız için teşekkürler!
Michael Armes

1
  • Jandarma açık kaynaklı kural tabanlı statik analizördür (FXCop'a benzer, ancak birçok farklı sorun bulur).
  • Clone Detective , Visual Studio için yinelenen kod bulan güzel bir eklentidir.
  • Mono'dan da bahsetmişken, Mono derleyicisiyle derleme eylemini buluyorum (kodunuz bunu yapmak için yeterince bağımsız bir platformsa, yine de çabalamak isteyebileceğiniz bir hedef), Visual Studio'nun tamamen kaçırdığı tonlarca referanssız değişken ve diğer Uyarıları bulur (uyarı seviyesi 4'e ayarlı olsa bile).

1

CAT.NET'i gördün ?

Bulanıklıktan -

CAT.NET, Siteler Arası Komut Dosyası (XSS), SQL Enjeksiyonu ve XPath Enjeksiyonu gibi yaygın saldırı vektörlerinin ortaya çıkmasına neden olabilecek bazı geçerli güvenlik açıklarının ortak varyantlarını tanımlamaya yardımcı olan bir ikili kod analiz aracıdır.

Erken bir beta kullandım ve bakmaya değer birkaç şey ortaya çıktı.






-1

Axivion Bauhaus Süit , C # (C, C ++ ve Java'nın yanı sıra) ile çalışan statik bir analiz aracıdır.

Aşağıdaki özellikleri sağlar:

  • Yazılım Mimarisi Görselleştirme (bağımlılıkları içeren)
  • Katmanlama, alt sistemler, çağrı kuralları gibi mimari kuralların uygulanması
  • Klon Algılama - kopya ve yapıştırılan (ve değiştirilen kod) vurgulama
  • Ölü Kod Tespiti
  • Döngü Algılama
  • Yazılım Metrikleri
  • Kod Stili Kontrolleri

Bu özellikler bir kereye mahsus olarak veya Sürekli Entegrasyon sürecinin bir parçası olarak çalıştırılabilir. Sistem bir kaynak kodu kontrol sistemi ile entegre edildiğinde sorunlar proje bazında veya geliştirici bazında vurgulanabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.