Domanda

Quali sono le strategie che vengono utilizzate quando attuazione FxCop / l'analisi statica di codice esistente basi di violazioni esistenti?Come si può in modo più efficace di ridurre l'analisi statica violazioni?

È stato utile?

Soluzione

Fare uso liberale di [SuppressMessage] attributo per iniziare con.Almeno all'inizio.Una volta a ottenere il conteggio a 0 tramite l'attributo, è possibile quindi mettere in una regola che le nuove archiviazioni non possono introdurre FxCop violazioni.

Visual Studio 2008 ha un bel funzionalità di analisi di codice che consente di garantire che l'analisi del codice viene eseguito su ogni costruire e si può trattare avvertenze errori.Che potrebbe rallentare le cose un po ' così mi consiglia di configurare un server di continuous integration (come CruiseControl.NET) e dopo aver eseguito l'analisi del codice su ogni checkin.

Una volta che si ottiene sotto controllo e non sono l'introduzione di nuove violazioni con ogni checkin, iniziare ad affrontare intere classi di FxCop violazioni alla volta, con l'obiettivo di rimuovere le SuppressMessageAttributes che hai usato.

Il modo per tenere traccia di quelli che davvero si desidera mantenere è quello di aggiungere sempre una Giustificazione valore per quelli che si vogliono veramente per sopprimere.

Altri suggerimenti

Riscrivere il codice in un passaggio di stile!

Seriamente, un vecchio codice di base avrà centinaia di errori - ma è per questo che abbiamo novizio/interno programmatori.La correzione FxCop violazioni, è un ottimo modo per ottenere una panoramica del codice di base e anche di imparare a scrivere conformi .NET code.

Così appena morso il proiettile, bere un sacco di caffeina, e solo ottenere attraverso di essa in un paio di giorni!

NDepend sembra si potrebbe fare che cosa siete dopo, ma non so se può essere integrato in un CruiseControl.Net compilazione automatica e non il costruire se il codice non conforme ai requisiti (che è ciò che vorrei accadesse).

Altre idee?

Un'alternativa per FxCop sarebbe quello di utilizzare lo strumento NDepend.Questo strumento consente di scrivere Codice di Regole su C# Query LINQ (quello che noi chiamiamo CQLinq). Disclaimer:Io sono uno degli sviluppatori del tool

Più di 200 del codice di regole sono proposti di default.Personalizzazione delle regole esistenti o la creazione delle proprie regole è semplice grazie agli noto C# sintassi LINQ.

Per mantenere il numero di falsi positivi basso, CQLinq offre funzionalità uniche per definire ciò che è il set JustMyCode attraverso il codice speciale query con prefisso notmycode.Ulteriori spiegazioni su questa funzione può essere trovato qui.Ecco, per esempio, due notmycode query predefinite:

Per mantenere il numero di falsi positivi basso, con CQLinq è anche possibile mettere a fuoco le regole di risultato solo nel codice aggiunto o refactoring del codice, dal momento che un definito basale in passato.Vedere la seguente regola, che rileva metodi troppo complesso aggiunto o rielaborate dal momento che il valore di riferimento:

warnif count > 0 
from m in Methods
where m.CyclomaticComplexity > 20 &&
      m.WasAdded() || m.CodeWasChanged()
select new { m, m.CyclomaticComplexity }

Infine, si noti che con NDepend norme del codice può essere verificato vivere in Visual Studio e al processo di generazione del tempo, in un in HTML+javascript report.

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