Domanda

Quali strumenti sono disponibili per l'analisi statica rispetto al codice C#?Conosco FxCop e StyleCop.Ce ne sono altri?Mi sono già imbattuto in NStatic in passato, ma è in fase di sviluppo da un'eternità: sembra piuttosto fluido da quel poco che ne ho visto, quindi sarebbe bello se vedesse mai la luce.

Sulla stessa linea (questo è principalmente il mio interesse per l'analisi statica), anche gli strumenti per testare il codice per problemi di multithreading (deadlock, race conditions, ecc.) sembrano un po' scarsi.Typemock Racer è appena apparso, quindi lo guarderò.Qualcosa oltre a questo?

Le opinioni della vita reale sugli strumenti che hai utilizzato sono apprezzate.

È stato utile?

Soluzione

Strumenti di rilevamento delle violazioni del codice:

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

    Modifica ottobre 2010: Non più disponibile come download autonomo.Ora è incluso nel file SDK di Windows e dopo l'installazione si trova 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 Analisi del codice

  • In perfetto orario, basato sull'analisi del codice sorgente (fino a C# 2.0)
  • Mono.Gendarme, simile a Fxcop ma con licenza opensource (basata su Mono.Cecil)
  • Fumoso, simile a Fxcop e Gendarme, basato su Mono.Cecil.Non più in fase di sviluppo, lo sviluppatore principale ora lavora con il team 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
  • CodeIt.Right
  • Specifica n.
  • Pex

Strumenti metrici di qualità:

  • NDipende, ottimo strumento visivo.Utile per metriche del codice, regole, differenze, accoppiamento e studi sulle dipendenze.
  • Nitriq, gratuito, puoi scrivere facilmente le tue metriche/vincoli, visualizzazioni piacevoli. Modifica febbraio 2018: i link per il download sono ormai morti.
  • RSM quadrato, sulla base dell'analisi del codice sorgente
  • Metriche C#, utilizzando un'analisi completa di C#
  • SourceMonitor, un vecchio strumento che occasionalmente riceve aggiornamenti
  • Metriche del codice, UN Riflettore aggiungere
  • Vil, vecchio strumento che non supporta .NET 2.0. Modifica gennaio 2018: Collegamento ora morto

Controllo degli strumenti di stile:

  • StyleCop, strumento Microsoft (eseguito dall'interno di Visual Studio o integrato in un progetto MSBuild).Anche disponibile come estensione per Visual Studio 2015 e C#6.0
  • Agente Smith, plugin di convalida dello stile del codice per ReSharper

Rilevamento della duplicazione:

  • scimmiesco, basato sul codice sorgente.Funziona con molte lingue.
  • CloneDR, rileva cloni con parametri solo sui limiti della lingua (gestisce anche molte lingue diverse da C#)
  • Detective clone un plug-in di Visual Studio.(Utilizza ConQAT internamente)
  • Atomiq, basato sul codice sorgente, numerose lingue, fantastica visualizzazione a "ruota".

Strumenti generali di refactoring

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

Altri suggerimenti

Lo strumento NDipende è citato come Strumenti metrici di qualità ma è praticamente anche a Rilevamento della violazione del codice attrezzo. Disclaimer:Sono uno degli sviluppatori dello strumento

Con NDepend si può scrivere Regola del codice sulle query LINQ (ciò che chiamiamo CQLinq).Più di 200 regole del codice CQLinq sono proposti per impostazione predefinita.La forza di CQLinq è questa è semplice scrivere una regola di codice, e prendi subito risultati.Vengono proposte funzionalità per sfogliare gli elementi di codice corrispondenti.Per esempio:

CQLinq code rule

Oltre a ciò, NDepend ne include molti altri analisi statica come caratteristiche.Questi includono:

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

Hai visto CAT.NET?

Dal trafiletto -

Cat.NET è uno strumento di analisi del codice binario che aiuta a identificare le varianti comuni di alcune vulnerabilità prevalenti che possono dare origine a vettori di attacco comuni come lo scripting incrociato (XSS), l'iniezione di SQL e l'iniezione di XPath.

Ho usato una beta iniziale e sembrava che fossero emerse alcune cose che vale la pena guardare.

A parte l'eccellente elenco di madgnome, aggiungerei un rilevatore di codici duplicati basato sulla riga di comando (ma è gratuito):

http://sourceforge.net/projects/duplo/

Klocwork ha uno strumento di analisi statica per C#: http://www.klocwork.com

Trovo il Metriche del codice E Matrice della struttura delle dipendenze componenti aggiuntivi per Reflector molto utili.

Optimyth Software ha appena lanciato un servizio di analisi statica nel cloud www.checkinginthecloud.com.Carica semplicemente il tuo codice in modo sicuro, esegui l'analisi e ottieni i risultati.Nessun problema.

Supporta diversi linguaggi, incluso C#, ulteriori informazioni sono disponibili su www.optimyth.com

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

Fornisce le seguenti funzionalità:

  • Visualizzazione dell'architettura software (comprese le dipendenze)
  • Applicazione di regole architettoniche, ad es.stratificazione, sottosistemi, regole di chiamata
  • Rilevamento clonazione: evidenziazione di copia e incolla (e codice modificato)
  • Rilevamento del codice morto
  • Rilevamento del ciclo
  • Metriche del software
  • Controlli dello stile del codice

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top