Quali strumenti di analisi statica sono disponibili per C #? [chiuso]


174

Quali strumenti sono disponibili per l'analisi statica rispetto al codice C #? Conosco FxCop e StyleCop. Ce ne sono altri? Ho incontrato NStatic in precedenza, ma è stato in sviluppo per quello che sembra per sempre - sembra piuttosto lucido da quel poco che ne ho visto, quindi sarebbe bello se vedesse mai la luce del giorno.

Sulla stessa linea (questo è principalmente il mio interesse per l'analisi statica), anche gli strumenti per testare il codice per problemi di multithreading (deadlock, condizioni di gara, ecc.) Sembrano un po 'scarsi. Typemock Racer è appena spuntato, quindi lo guarderò. Qualcosa al di là di questo?

Le opinioni nella vita reale sugli strumenti che hai usato sono apprezzate.


@IraBaxter Ho iniziato una discussione su questa domanda su Meta e ti invito a dare voce ai tuoi argomenti sul perché questa domanda non dovrebbe essere eliminata, se lo desideri.

Risposte:


341

Strumenti di rilevamento della violazione del codice:

  • Fxcop , ottimo strumento di Microsoft. Verificare la conformità con le linee guida del framework .net.

    Modifica ottobre 2010: non è più disponibile come download autonomo. Ora è incluso in Windows SDK e dopo l'installazione è disponibile in Programmi \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe

    Modifica febbraio 2018 : questa funzionalità è stata ora integrata in Visual Studio 2012 e versioni successive come analisi del codice

  • Clocksharp , basato sull'analisi del codice sorgente (secondo C # 2.0)

  • Mono.Gendarme , simile a Fxcop ma con una licenza opensource (basata su Mono.Cecil )

  • Smokey , simile a Fxcop e Gendarme, basato su Mono.Cecil . Non più sullo sviluppo, lo sviluppatore principale lavora ora con il team di Gendarme.

  • Coverity Prevent ™ per C # , prodotto commerciale

  • PRQA QA · C # , prodotto commerciale

  • PVS-Studio , prodotto commerciale

  • CAT.NET , componente aggiuntivo di Visual Studio che aiuta a identificare i difetti di sicurezza Modifica novembre 2019: il collegamento è morto.

  • CodeIt.Right

  • Spec #

  • Pex

  • SonarQube , FOSS e opzioni commerciali per supportare la scrittura di codice più pulito e sicuro.

Strumenti metrici di qualità:

  • NDepend , ottimo strumento visivo. Utile per metriche del codice, regole, differenze, studi di accoppiamento e dipendenza.
  • Nitriq , gratuito, può facilmente scrivere le proprie metriche / vincoli, belle visualizzazioni. Modifica febbraio 2018: i link per il download ora sono morti. Modifica 17 giugno 2019: collegamenti non morti.
  • RSM Squared , basato sull'analisi del codice sorgente
  • Metriche C # , utilizzando un'analisi completa di C #
  • SourceMonitor , un vecchio strumento che a volte riceve aggiornamenti
  • Code Metrics , un componente aggiuntivo Reflector
  • Vil , vecchio strumento che non supporta .NET 2.0. Modifica gennaio 2018: link ora morto

Verifica degli strumenti di stile:

  • StyleCop , strumento Microsoft (eseguito dall'interno di Visual Studio o integrato in un progetto MSBuild). Disponibile anche come estensione per Visual Studio 2015 e C # 6.0
  • Agent Smith , plug-in di convalida in stile codice per ReSharper

Rilevamento di duplicazione:

  • Simian , basato sul codice sorgente. Funziona con molte lingue.
  • CloneDR , rileva cloni parametrizzati solo sui confini della lingua (gestisce anche molte lingue diverse da C #)
  • Clone Detective un plug-in Visual Studio. (Utilizza ConQAT internamente)
  • Atomiq , basato sul codice sorgente, molte lingue, una fantastica visualizzazione "a ruota"

Strumenti generali di refactoring

  • ReSharper - Funzionalità di analisi e refactoring del codice C # molto interessanti

4
Vedere la pagina di MSDN su FxCop: msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCop è un'applicazione che analizza assembly di codice gestito (il codice che gli obiettivi di .NET Framework Common Language Runtime) e riporta informazioni sugli assiemi, come possibili miglioramenti di progettazione, localizzazione, prestazioni e sicurezza. "
Sarah Vessels,

Il collegamento FxCop è stato rimosso dal sito Microsoft. Ecco il "download" di FxCop 10.0: microsoft.com/downloads/…
ulrichb

È questo Simian: harukizaemon.com/simian/index.html ? (hai un collegamento interrotto). Inoltre sembra essere solo .NET 1.1.
Theraot,

@Theraot Grazie, ho cambiato l'URL. Per quanto riguarda la versione .NET, Simian può essere eseguito su .NET 1.1 su Java 5 ma ciò non significa che rilevi duplicazioni in altre versioni di .NET
Julien Hoarau,

Nitriq non sembra più disponibile. Il link per il download (ora reindirizza a NimblePros, parte di Telerik) dice "Siamo spiacenti, non offriamo più Nitriq"
Narayana,

7

Lo strumento NDepend è citato come Quality Metric Tools ma è praticamente anche uno strumento di rilevamento della violazione del codice . Disclaimer: sono uno degli sviluppatori dello strumento

Con NDepend, si può scrivere la regola del codice su query LINQ (ciò che chiamiamo CQLinq) . Più di 200 regole di codice CQLinq sono proposte per impostazione predefinita. Il punto di forza di CQLinq è che è semplice scrivere una regola di codice e ottenere immediatamente risultati. Le strutture sono proposte per sfogliare gli elementi di codice abbinati. Per esempio:

Regola del codice CQLinq

Oltre a ciò, NDepend include molte altre analisi statiche come le funzionalità. Questi includono:


Ho avuto l'opportunità di provare NDepend nelle ultime settimane: un grande fan, quando potrò ottenere una licenza di sviluppo. :) Grazie per il tuo lavoro!
Michael Armes,

1
  • Gendarme è un analizzatore statico basato su regole open source (simile a FXCop, ma riscontra molti problemi diversi).
  • Clone Detective è un bel plug-in per Visual Studio che trova codice duplicato.
  • Sempre parlando di Mono, trovo che l'atto di compilare con il compilatore Mono (se il tuo codice è abbastanza indipendente dalla piattaforma per farlo, un obiettivo che potresti voler lottare comunque) trova tonnellate di variabili senza riferimento e altri avvertimenti che Visual Studio manca completamente (anche con il livello di avviso impostato su 4).

1

Hai visto CAT.NET ?

Dal blurb -

CAT.NET è uno strumento di analisi del codice binario che aiuta a identificare varianti comuni di alcune vulnerabilità prevalenti che possono dare origine a vettori di attacco comuni come Cross-Site Scripting (XSS), SQL Injection e XPath Injection.

Ho usato una beta iniziale e mi è sembrato di mostrare alcune cose che vale la pena guardare.





-1

Optimyth Software ha appena lanciato un servizio di analisi statica nel cloud www.checkinginthecloud.com . Basta caricare in modo sicuro il codice per eseguire l'analisi e ottenere i risultati. Nessun problema.

Supporta diverse lingue tra cui C # Ulteriori informazioni sono disponibili all'indirizzo wwww.optimyth.com


-1

Axivion Bauhaus Suite è uno strumento di analisi statica che funziona con C # (nonché con C, C ++ e Java).

Fornisce le seguenti funzionalità:

  • Visualizzazione dell'architettura software (comprese le dipendenze)
  • Applicazione delle regole dell'architettura, ad esempio stratificazione, sottosistemi, regole di chiamata
  • Clone Detection - evidenziando copia e incolla (e codice modificato)
  • Rilevamento del codice morto
  • Rilevazione del ciclo
  • Metriche del software
  • Controlli dello stile del codice

Queste funzionalità possono essere eseguite su base una tantum o come parte di un processo di integrazione continua. I problemi possono essere evidenziati per progetto o per sviluppatore quando il sistema è integrato con un sistema di controllo del codice sorgente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.