Jakie narzędzia analizy statycznej są dostępne dla C#? [zamknięte]

Jakie narzędzia są dostępne do statycznej analizy kodu C#? Wiem o FxCop i StyleCop. Są inni? Natknąłem się już na NStatic, ale jest w fazie rozwoju, co wydaje się być na zawsze - wygląda całkiem zgrabnie z tego, co niewiele widziałem, więc byłoby miło, gdyby kiedykolwiek ujrzał światło dzienne.

Wzdłuż tych samych linii (interesuje mnie przede wszystkim analiza statyczna), narzędzia do testowania kodu dla zagadnień wielowątkowych (deadlocks, race warunki itp.) wydaje się też nieco Rzadki. Typemock Racer właśnie wyskoczył, więc będę na to patrzył. Coś poza tym?

Prawdziwe opinie o używanych narzędziach są doceniane.

Author: Kris Erickson, 2008-09-02

9 answers

Narzędzia do wykrywania naruszeń kodu:

Narzędzia Metryczne Jakości:

  • NDepend , świetne narzędzie wizualne. Przydatne dla metryk kodu, reguł, różnic, sprzężeń i zależności studia.
  • Nitriq , darmowy, może łatwo napisać własne metryki/ograniczenia, ładne wizualizacje. Edycja luty 2018: Pobierz linki teraz martwe.
  • RSM do kwadratu , na podstawie analizy źródła kodu
  • C # Metrics , używając pełnego parsowania C #
  • W 2007 roku, po raz pierwszy w historii, pojawiła się nowa wersja SourceMonitor.]}
  • Code Metrics , a Reflektor add-in
  • Vil , stare narzędzie, które nie obsługuje. NET 2.0. Edycja styczeń 2018: Link now dead

Sprawdzanie Narzędzi Stylu:

  • [116]}StyleCop , Narzędzie Microsoft (uruchamiane z wnętrza Visual Studio lub zintegrowane z projektem MSBuild). Dostępne również jako rozszerzenie dla Visual Studio 2015 i C#6.0
  • Agent Smith , wtyczka walidacji stylu kodu dla ReSharper

Duplikacja Detekcja:

  • Simian , na podstawie kodu źródłowego. Współpracuje z wieloma językami.
  • CloneDR (ang. CloneDR), wykrywa sparametryzowane klony tylko na granicach języka (obsługuje również wiele języków innych niż C#).]}
  • Clone Detective Wtyczka Visual Studio. (Używa ConQAT wewnętrznie)
  • [148]}Atomiq , oparty na kodzie źródłowym, mnóstwo języków, fajna wizualizacja "koła"

Ogólna Refaktoryzacja narzędzia

  • ReSharper - bardzo fajne funkcje analizy i refaktoryzacji kodu C# ]}
 318
Author: Julien Hoarau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 17:39:21

Narzędzie NDependjest cytowane jako Narzędzia metryczne jakości, ale jest to również narzędzie wykrywanie naruszenia kodu. Zastrzeżenie: jestem jednym z twórców narzędzia

Za pomocą NDepend można zapisać regułę kodu nad zapytaniami LINQ (co nazywamy CQLinq) . Domyślnie proponuje się więcej niż 200 reguł kodu CQLinq. Siła CQLinq jest taka, że łatwo jest napisać regułę kodu i uzyskać natychmiast wyniki. Obiekty są proponowane do przeglądania dopasowanych elementów kodu. Na przykład:

Reguła kodu CQLinq

Poza tym, NDepend zawiera wiele innych analiz statycznych, takich jak Funkcje. Należą do nich:

 8
Author: Patrick from NDepend team,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-12 13:28:09
 2
Author: Kris Erickson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-02 17:11:07

Czy widziałeś CAT.NET?

Z blurb -

CAT.NET jest narzędziem do analizy kodu binarnego to pomaga zidentyfikować typowe warianty pewne przeważające słabości które mogą spowodować powszechny atak wektory takie jak Cross-Site Scripting (XSS), SQL Injection i XPath Wstrzyknięcie.

Użyłem wczesnej bety i okazało się, że znalazłem kilka rzeczy wartych obejrzenia.

 2
Author: markdevilliers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-24 17:37:29

Oprócz doskonałej listy autorstwa madgnome, dodałbym wykrywacz duplikatów kodu, który bazuje na wierszu poleceń (ale jest darmowy):

Http://sourceforge.net/projects/duplo/

 1
Author: torial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-19 02:07:51

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

 0
Author: Alen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-01 02:13:52

Uważam, że Metryka kodui macierz struktury zależności Dodatki do reflektora są bardzo przydatne.

 0
Author: Hamish Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-13 05:47:13

Optimyth Software uruchomił właśnie 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

 0
Author: Javier Salado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-07 13:22:41

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. warstwowanie, podsystemy, wywołanie reguł
  • wykrywanie klonów-zaznaczanie kopiowania i wklejania (i modyfikowanego kodu)
  • Wykrywanie Martwego Kodu
  • Wykrywanie Cyklu
  • oprogramowanie Metryki
  • Sprawdzanie Stylu Kodu

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

 0
Author: Mark Dalgarno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-06 13:56:10