Welche statischen Analysewerkzeuge stehen für C # zur Verfügung? [geschlossen]

174

Welche Tools stehen für die statische Analyse anhand von C # -Code zur Verfügung? Ich kenne FxCop und StyleCop. Gibt es noch andere Ich bin NStatic schon einmal begegnet, aber es befindet sich seit Ewigkeiten in der Entwicklung - es sieht ziemlich gut aus, wenn man bedenkt, wie wenig ich davon gesehen habe. Es wäre also schön, wenn es jemals das Licht der Welt erblicken würde.

In diesem Sinne (dies ist in erster Linie mein Interesse an der statischen Analyse) scheinen Tools zum Testen von Code für Multithreading-Probleme (Deadlocks, Rennbedingungen usw.) ebenfalls etwas rar zu sein. Typemock Racer ist gerade aufgetaucht, also werde ich mir das ansehen. Etwas darüber hinaus?

Meinungen aus dem wirklichen Leben zu Tools, die Sie verwendet haben, werden geschätzt.

Paul Mrozowski
quelle
@IraBaxter Ich habe eine Diskussion über diese Frage auf Meta begonnen und lade Sie ein, Ihre Argumente dafür zu äußern, warum diese Frage nicht gelöscht werden sollte, wenn Sie möchten.

Antworten:

341

Tools zur Erkennung von Codeverletzungen:

  • Fxcop , exzellentes Tool von Microsoft. Überprüfen Sie die Einhaltung der .net Framework-Richtlinien.

    Bearbeiten Oktober 2010: Nicht mehr als eigenständiger Download verfügbar. Es ist jetzt im Windows SDK enthalten und befindet sich nach der Installation unter Programme \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe

    Bearbeiten Februar 2018 : Diese Funktionalität wurde jetzt in Visual Studio 2012 und später als Code-Analyse integriert

  • Clocksharp , basierend auf der Analyse der Codequelle (auf C # 2.0)
  • Mono.Gendarme , ähnlich wie Fxcop, jedoch mit einer OpenSource-Lizenz (basierend auf Mono.Cecil )
  • Smokey , ähnlich wie Fxcop und Gendarme, basierend auf Mono.Cecil . Der Hauptentwickler befindet sich nicht mehr in der Entwicklung und arbeitet jetzt mit dem Gendarme-Team zusammen.
  • Coverity Prevent ™ für C # , kommerzielles Produkt
  • PRQA QA · C # , kommerzielles Produkt
  • PVS-Studio , kommerzielles Produkt
  • CAT.NET , Visual Studio- Add-In , das bei der Identifizierung von Sicherheitslücken hilft Bearbeiten November 2019: Link ist tot.
  • CodeIt.Right
  • Spec #
  • Pex

Qualitätsmetrische Werkzeuge:

  • NDepend , großartiges visuelles Werkzeug. Nützlich für Codemetriken, Regeln, Diff-, Kopplungs- und Abhängigkeitsstudien.
  • Nitriq , kostenlos, kann leicht Ihre eigenen Metriken / Einschränkungen schreiben, schöne Visualisierungen. Bearbeiten Februar 2018: Download-Links jetzt tot. Bearbeiten 17. Juni 2019: Links nicht tot.
  • RSM Squared , basierend auf der Analyse der Codequelle
  • C # -Metriken unter Verwendung einer vollständigen Analyse von C #
  • SourceMonitor , ein altes Tool, das gelegentlich aktualisiert wird
  • Code Metrics , ein Reflektor- Add-In
  • Vil , altes Tool, das .NET 2.0 nicht unterstützt. Edit Januar 2018: Link jetzt tot

Überprüfen der Stilwerkzeuge:

  • StyleCop , Microsoft-Tool (wird in Visual Studio ausgeführt oder in ein MSBuild-Projekt integriert). Auch als Erweiterung für Visual Studio 2015 und C # 6.0 verfügbar
  • Agent Smith , Plugin zur Validierung des Codestils für ReSharper

Duplikationserkennung:

  • Simian , basierend auf dem Quellcode. Funktioniert mit vielen Sprachen.
  • CloneDR erkennt parametrisierte Klone nur an Sprachgrenzen (behandelt auch viele andere Sprachen als C #).
  • Clone Detective ein Visual Studio-Plugin. (Es verwendet ConQAT intern)
  • Atomiq , basierend auf Quellcode, vielen Sprachen, cooler "Rad" -Visualisierung

Allgemeine Refactoring-Tools

  • ReSharper - Hauptsächlich coole C # -Code-Analyse- und Refactoring-Funktionen
Julien Hoarau
quelle
4
Weitere Informationen finden Sie auf der MSDN-Seite zu FxCop: msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCop ist eine Anwendung, die verwaltete Code-Assemblys analysiert (Code, der auf die Common Language Runtime von .NET Framework abzielt ). und meldet Informationen zu den Baugruppen, z. B. mögliche Verbesserungen in Bezug auf Design, Lokalisierung, Leistung und Sicherheit. "
Sarah Vessels
Der FxCop-Link wurde von der Microsoft-Site entfernt. Hier ist der FxCop 10.0 "Download": microsoft.com/downloads/…
ulrichb
Ist das Simian: harukizaemon.com/simian/index.html ? (Du hast einen defekten Link). Außerdem scheint es nur .NET 1.1 zu sein.
Theraot
@ Theraot Danke, ich habe die URL geändert. In Bezug auf die .NET-Version kann Simian unter .NET 1.1 unter Java 5 ausgeführt werden. Dies bedeutet jedoch nicht, dass Duplikate in anderen .NET-Versionen erkannt werden
Julien Hoarau,
Nitriq scheint nicht mehr verfügbar zu sein. Der Download-Link (der jetzt zu NimblePros, einem Teil von Telerik, weiterleitet) lautet "Es tut uns leid, wir bieten Nitriq nicht mehr an"
Narayana
7

Das Tool NDepend wird als Quality Metric Tools bezeichnet , ist aber auch ein Tool zur Erkennung von Codeverletzungen . Haftungsausschluss: Ich bin einer der Entwickler des Tools

Mit NDepend kann man Code-Regeln über LINQ-Abfragen schreiben (was wir CQLinq nennen) . Standardmäßig werden mehr als 200 CQLinq-Coderegeln vorgeschlagen. Die Stärke von CQLinq besteht darin, dass es einfach ist, eine Coderegel zu schreiben und sofort Ergebnisse zu erhalten. Es werden Einrichtungen zum Durchsuchen übereinstimmender Codeelemente vorgeschlagen. Beispielsweise:

CQLinq-Code-Regel

Darüber hinaus bietet NDepend viele andere statische Analysefunktionen . Diese beinhalten:

Patrick vom NDepend-Team
quelle
Ich hatte in den letzten Wochen die Gelegenheit, NDepend zu testen - großer Fan, der eine Entwicklerlizenz bekommen wird, wenn ich kann. :) Danke für deine Arbeit!
Michael Armes
1
  • Gendarme ist ein auf Open Source-Regeln basierender statischer Analysator (ähnlich wie FXCop, findet jedoch viele verschiedene Probleme).
  • Clone Detective ist ein nettes Plug-In für Visual Studio, das doppelten Code findet.
  • Wenn ich auch von Mono spreche, finde ich beim Kompilieren mit dem Mono-Compiler (wenn Ihr Code plattformunabhängig genug ist, ein Ziel, das Sie vielleicht trotzdem anstreben möchten) Tonnen von nicht referenzierten Variablen und anderen Warnungen, die Visual Studio vollständig übersieht (auch wenn die Warnstufe auf 4 eingestellt ist).
Kris Erickson
quelle
1

Haben Sie CAT.NET gesehen ?

Aus dem Klappentext -

CAT.NET ist ein Tool zur Analyse von Binärcodes, mit dessen Hilfe häufige Varianten bestimmter vorherrschender Sicherheitslücken identifiziert werden können, die zu häufigen Angriffsmethoden wie Cross-Site Scripting (XSS), SQL Injection und XPath Injection führen können.

Ich habe eine frühe Beta verwendet und es schien ein paar Dinge zu zeigen, die es wert sind, angeschaut zu werden.

Markdevilliers
quelle
-1

Klocwork verfügt über ein statisches Analysetool für C #: http://www.klocwork.com

Alen
quelle
Unsere Firma hat das gekauft. Im Bereich von 30.000 US-Dollar für uns
Dan Dot Net
-1

Optimyth Software hat gerade einen statischen Analysedienst in der Cloud www.checkinginthecloud.com gestartet . Laden Sie einfach Ihren Code sicher hoch, führen Sie die Analyse durch und erhalten Sie die Ergebnisse. Keine Probleme.

Es unterstützt mehrere Sprachen, einschließlich C #. Weitere Informationen finden Sie unter wwww.optimyth.com

Javier Salado
quelle
-1

Axivion Bauhaus Suite ist ein statisches Analysetool, das mit C # (sowie C, C ++ und Java) funktioniert.

Es bietet die folgenden Funktionen:

  • Visualisierung der Softwarearchitektur (einschließlich Abhängigkeiten)
  • Durchsetzung von Architekturregeln, z. B. Layering, Subsysteme, Aufrufregeln
  • Klonerkennung - Hervorheben von kopiertem und eingefügtem (und geändertem Code)
  • Dead Code Detection
  • Zykluserkennung
  • Software-Metriken
  • Code Style Checks

Diese Funktionen können einmalig oder als Teil eines kontinuierlichen Integrationsprozesses ausgeführt werden. Probleme können pro Projekt oder Entwickler hervorgehoben werden, wenn das System in ein Quellcodeverwaltungssystem integriert ist.

Mark Dalgarno
quelle