Jakie narzędzia do analizy statycznej są dostępne dla języka C #? [Zamknięte]

174

Jakie narzędzia są dostępne do analizy statycznej w kodzie C #? Wiem o FxCop i StyleCop. Czy są inni? Zetknąłem się już z NStatic, ale było w fazie rozwoju, co wydaje się być wieczne - z tego, co widziałem, wygląda całkiem nieźle, więc byłoby miło, gdyby kiedykolwiek ujrzał światło dzienne.

Z tych samych powodów (jest to przede wszystkim moje zainteresowanie analizą statyczną), narzędzia do testowania kodu pod kątem problemów wielowątkowych (zakleszczenia, warunki wyścigu itp.) Również wydają się nieco rzadkie. Właśnie pojawił się Typemock Racer, więc przyjrzę się temu. Coś poza tym?

Doceniane są opinie z życia wzięte na temat używanych przez Ciebie narzędzi.

Paweł Mrozowski
źródło
@IraBaxter Rozpocząłem dyskusję na temat tego pytania na Meta i zapraszam do wyrażenia swoich argumentów, dlaczego to pytanie nie powinno zostać usunięte, jeśli chcesz.

Odpowiedzi:

341

Narzędzia do wykrywania naruszeń kodu:

  • Fxcop , doskonałe narzędzie firmy Microsoft. Sprawdź zgodność z wytycznymi dotyczącymi platformy .net.

    Edytuj październik 2010: nie jest już dostępne jako samodzielne pobieranie. Jest teraz zawarty w Windows SDK i po instalacji można go znaleźć w Program Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe

    Edytuj luty 2018 r . : ta funkcja została teraz zintegrowana z programem Visual Studio 2012 i nowszym jako analiza kodu

  • Clocksharp , na podstawie analizy źródła kodu (do C # 2.0)

  • Mono.Gendarme , podobny do Fxcop, ale z licencją opensource (opartą na Mono.Cecil )

  • Smokey , podobny do Fxcop i Gendarme, oparty na Mono.Cecil . Koniec z rozwojem, główny programista współpracuje teraz z zespołem Gendarme.

  • Coverity Prevent ™ dla C # , produkt komercyjny

  • PRQA QA · C # , produkt komercyjny

  • PVS-Studio , produkt komercyjny

  • CAT.NET , dodatek do Visual Studio ułatwiający identyfikację luk w zabezpieczeniach Edytuj Listopad 2019: Link nie żyje.

  • CodeIt.Right

  • Spec #

  • Pex

  • SonarQube , FOSS i opcje komercyjne wspierające pisanie czystszego i bezpieczniejszego kodu.

Jakościowe narzędzia metryczne:

  • NDepend , świetne narzędzie wizualne. Przydatne przy metrykach kodu, regułach, różnicach, sprzężeniach i badaniach zależności.
  • Nitriq , darmowy, może z łatwością pisać własne metryki / ograniczenia, ładne wizualizacje. Edycja lutego 2018: linki do pobrania są już martwe. Edycja 17 czerwca 2019: Linki nie umarły.
  • RSM Squared na podstawie analizy źródła kodu
  • Metryki C # przy użyciu pełnej analizy języka C #
  • SourceMonitor , stare narzędzie, które czasami otrzymuje aktualizacje
  • Code Metrics , dodatek Reflector
  • Vil , stare narzędzie, które nie obsługuje .NET 2.0. Edycja stycznia 2018: Link nie żyje

Narzędzia do sprawdzania stylu:

  • StyleCop , narzędzie Microsoft (uruchamiane z poziomu programu Visual Studio lub zintegrowane z projektem MSBuild). Dostępne również jako rozszerzenie dla programu Visual Studio 2015 i C # 6.0
  • Agent Smith , wtyczka do walidacji stylu kodu dla ReSharper

Wykrywanie duplikatów:

  • Simian , na podstawie kodu źródłowego. Działa z wieloma językami.
  • CloneDR , wykrywa sparametryzowane klony tylko na granicach języka (obsługuje również wiele języków innych niż C #)
  • Clone Detective a wtyczka Visual Studio. ( Wewnętrznie korzysta z ConQAT )
  • Atomiq , oparty na kodzie źródłowym, mnóstwo języków, fajna wizualizacja "koła"

Ogólne narzędzia refaktoryzacji

  • ReSharper - Majorly analiza chłodny kod C # i refaktoryzacji funkcje
Julien Hoarau
źródło
4
Zobacz stronę MSDN dotyczącą FxCop: msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx „FxCop to aplikacja analizująca zestawy kodu zarządzanego (kod przeznaczony dla środowiska uruchomieniowego języka wspólnego .NET Framework) i raportuje informacje o zespołach, takie jak możliwy projekt, lokalizacja, wydajność i ulepszenia zabezpieczeń. "
Sarah Vessels
Łącze FxCop zostało usunięte z witryny Microsoft. Oto „pobierz” FxCop 10.0: microsoft.com/downloads/ ...
ulrichb
Czy to Simian: harukizaemon.com/simian/index.html ? (masz uszkodzony link). Wydaje się, że to tylko .NET 1.1.
Theraot
@Theraot Dzięki, zmieniłem adres URL. Jeśli chodzi o wersję .NET, Simian może działać na .NET 1.1 w Javie 5, ale to nie znaczy, że wykrywa duplikaty w innych wersjach .NET
Julien Hoarau
Wydaje się, że Nitriq nie jest już dostępny. Link do pobrania (teraz przekierowuje do NimblePros, części Telerik) mówi „Przepraszamy, nie oferujemy już Nitriq”
Narayana
7

Narzędzie NDepend jest cytowane jako Quality Metric Tools, ale jest również prawie narzędziem do wykrywania naruszeń Kodeksu . Zastrzeżenie: jestem jednym z twórców tego narzędzia

Dzięki NDepend można napisać regułę kodu przez LINQ Queries (co nazywamy CQLinq) . Domyślnie proponowanych jest ponad 200 reguł kodu CQLinq . Siła CQLinq polega na tym , że łatwo jest napisać regułę kodu i natychmiast uzyskać wyniki. Proponowane są narzędzia do przeglądania dopasowanych elementów kodu. Na przykład:

Reguła kodu CQLinq

Poza tym NDepend oferuje wiele innych funkcji analizy statycznej, takich jak funkcje. Obejmują one:

Patrick z zespołu NDepend
źródło
Miałem okazję wypróbować NDepend w ciągu ostatnich kilku tygodni - wielki fan, zamierzający zdobyć licencję deweloperską, kiedy tylko będę mógł. :) Dzięki za Twoją pracę!
Michael Armes
1
  • Żandarm to analizator statyczny oparty na regułach typu open source (podobny do FXCop, ale znajduje wiele różnych problemów).
  • Clone Detective to fajna wtyczka do programu Visual Studio, która znajduje zduplikowany kod.
  • Mówiąc również o Mono, uważam, że kompilacja za pomocą kompilatora Mono (jeśli twój kod jest wystarczająco niezależny od platformy, aby to zrobić, cel, do którego i tak możesz chcieć dążyć) znajduje mnóstwo zmiennych bez odniesień i innych ostrzeżeń, których Visual Studio całkowicie pomija (nawet przy poziomie ostrzegawczym ustawionym na 4).
Kris Erickson
źródło
1

Czy widziałeś CAT.NET ?

Z notki -

CAT.NET to narzędzie do analizy kodu binarnego, które pomaga zidentyfikować typowe warianty niektórych dominujących luk w zabezpieczeniach, które mogą prowadzić do typowych wektorów ataków, takich jak Cross-Site Scripting (XSS), SQL Injection i XPath Injection.

Użyłem wczesnej wersji beta i okazało się, że przyniosło kilka rzeczy, na które warto zwrócić uwagę.

markdevilliers
źródło
-1

Klocwork ma narzędzie do analizy statycznej dla języka C #: http://www.klocwork.com

Alen
źródło
Nasza firma to kupiła. W przedziale 30 000 $ dla nas
Dan dot net
-1

Optimyth Software właśnie uruchomiło usługę analizy statycznej w chmurze www.checkinginthecloud.com . Po prostu bezpiecznie prześlij swój kod, uruchom analizę i uzyskaj wyniki. Bez kłopotów.

Obsługuje kilka języków, w tym C # więcej informacji można znaleźć na wwww.optimyth.com

Javier Salado
źródło
-1

Axivion Bauhaus Suite to narzędzie do analizy statycznej, które współpracuje z C # (a także C, C ++ i Java).

Zapewnia następujące możliwości:

  • Wizualizacja architektury oprogramowania (w tym zależności)
  • Egzekwowanie reguł architektonicznych, np. Warstw, podsystemów, reguł wywoływania
  • Wykrywanie klonów - podświetlanie kopii i wklejania (i zmodyfikowanego kodu)
  • Wykrywanie martwego kodu
  • Wykrywanie cykli
  • Metryki oprogramowania
  • Sprawdzanie stylu kodu

Funkcje te mogą być uruchamiane jednorazowo lub w ramach procesu ciągłej integracji. Problemy można wskazywać na podstawie projektu lub dewelopera, gdy system jest zintegrowany z systemem kontroli kodu źródłowego.

Mark Dalgarno
źródło