2010-03-17 20 views
12

Abbiamo 3 anni di soluzione (.sln) con circa 20 progetti (.csproj). È ragionevole iniziare a utilizzare FxCop e/o StyleCop? Forse dovremmo usarlo prima per diversi piccoli progetti ma non per una soluzione completa?Dovremmo iniziare a utilizzare FxCop e/o StyleCop in un progetto maturo?

Sarebbe bello vedere alcune risposte con esperienza.

Grazie.

MODIFICA: Utilizziamo TeamCity per l'integrazione continua. E non abbiamo la possibilità di utilizzare ReSharper. :(CodeRushXpress solo.

risposta

10

Sì, si dovrebbe, ma lentamente.

ottenere una copia del ReSharper, installare StyleCop, e di ottenere lo StyleCop per il plugin ReSharper, messa a punto, che le regole che si desidera utilizzare, e da quindi ogni file che apri sarà pieno di linee blu sinuose per dirti dove vanno le cose.

Se li aggiusti, un file alla volta, alla fine ti ritroverai con un progetto pulito, senza la necessità di convincere il tuo capo a lasciarti trascorrere 3 settimane passando attraverso il tuo progetto senza fare nulla che si traduca in tempo utile!

Ottieni ting codice pulito è come refactoring, se si cerca di farlo nel corso di un intero progetto tutto in una volta, si sta andando a finire in una salamoia :)

+0

Sono assolutamente d'accordo. – Steven

+0

Sì, aggiungerli ti ucciderà per un po 'di tempo - mostrerà tonnellate di problemi. – TomTom

+0

Non è possibile utilizzare ReSharper. :(Qualche altro modo di usare StyleCop? Thru CodeRushXPress forse? E per quanto riguarda FxCop? –

0

A seconda di integrazione di come è stato creato una soluzione (e la risoluzione dei problemi segnalati da questi strumenti) potrebbe richiedere molto tempo, quindi penso che l'integrazione dei progetti uno per uno sia il modo in cui dovresti andare.

EDIT:

Oltre alla risposta di Ed Woodcock: è possibile configurare SyleCop (e scommetto anche FxCop) per eseguire automaticamente i loro controlli durante ogni VS build. Usando questa funzione è possibile attivare i controlli su tutti i progetti uno per uno e correggere tutti gli avvisi (inoltre è possibile configurare questi strumenti per generare errori) solo durante il normale sviluppo.

+0

Abbiamo TeamCity per l'integrazione continua. Probabilmente dovrei menzionarlo nella mia domanda. –

2

Ho appena iniziato a usare StyleCop sui miei progetti personali e ci vuole un po 'di tempo per elaborare i "problemi" sollevati.

Si consiglia di eseguire StyleCop su un campione dei file e analizzare i risultati prima di eseguire l'avvio per apportare eventuali modifiche.

Ad esempio, per impostazione predefinita StyleCop si lamenta della documentazione del metodo mancante per tutti i metodi, sia pubblici che privati. Ora, non posso rispondere a questo per te, ma devi decidere se vuoi che i metodi privati ​​abbiano una documentazione completa o meno (ci sono argomenti in entrambe le direzioni). Ma devi decidere in un modo o nell'altro. Non vuoi avere 6 mesi per apportare modifiche in un modo e poi decidere che lo vuoi l'altro. Questo ti porterà a fare cambiamenti non necessari o a rivisitare il codice che pensavi di aver finito.

Dopo aver apportato le modifiche necessarie alle impostazioni di StyleCop e averlo lasciato libero sulla base di codice, un progetto alla volta.

+0

Suppongo che ci sia il modo di usare StyleCop per un singolo progetto dalla coluizione ma non per una soluzione completa. Grazie. –

+0

@Vasiliy: so che è possibile fare clic con il pulsante destro del mouse su un file ed eseguire StyleCop su quel file dal menu di scelta rapida. Puoi fare lo stesso facendo clic destro su un progetto? (Non ho installato StyleCop su questo PC per verificare). – ChrisF

+0

Appena installato StyleCop. Sì, è possibile eseguire su un file o un progetto. –

1

Per quanto riguarda FxCop, sì, è una buona idea utilizzare lo strumento, sia che si tratti di un nuovo progetto o di uno esistente. Proprio come StyleCop, puoi eseguire lo strumento e rivedere l'output. A differenza di StyleCop, FxCop funziona su codice compilato, non su sorgente.

All'inizio sarà probabilmente travolgente.Una buona idea è di disattivare tutti i gruppi di regole e rieseguire lo strumento per ottenere una lavagna vuota. Abilita un gruppo alla volta, risolvendo tutti i messaggi visualizzati o disattivando regole specifiche in quel gruppo se non si applicano a te (le regole predefinite nel loro complesso sono piuttosto ampie e non tutte si applicheranno; set di regole per le tue esigenze).

Al termine, tutti i messaggi saranno stati risolti eseguendo correzioni appropriate o disabilitando selettivamente le regole estranee.

Di norma (nessun gioco di parole) considero i gruppi di sicurezza e di prestazioni quelli buoni con cui iniziare. Le regole di denominazione sono soggettive e possono essere in conflitto con le tue convenzioni. Disattivalo se è così. Anche la mobilità e la globalizzazione sono soggettive e dipendono dalle vostre esigenze. Per il resto, bene, tu crei le tue conclusioni!

+0

Risposta davvero utile. Grazie. –

3

Un'alternativa o un buon complemento a FxCop/StyleCop sarebbe utilizzare lo strumento commerciale NDepend. Con questo strumento è possibile scrivere Code Rule su LINQ Query(namely CQLinq). Disclaimer: io sono uno degli sviluppatori del tool

Più di 200 code rules sono proposti di default, questi includono disegno, architettura, codice di qualità, codice di evoluzione, convenzioni di denominazione, codice morto, utilizzo NET Fx ...

CQLinq è dedicato a scrivere regole codice che può essere verified live in Visual Studio o che può essere verified during build process and reported in an HTML/javascript report.

La forza di CQLinq sopra FxCop o StyleCop, è che è semplice per scrivere una regola di codice, e ottenere immediatamente risultati. Le strutture sono proposte per sfogliare gli elementi di codice abbinati. Concretamente questo sembra che:

CQLinq code rule

0

Dipende:

  • Non v'è alcun valore nel modificare il codice che sta lavorando per il gusto di farlo.
  • Lo stile di codifica StyleCop potrebbe non corrispondere bene allo stile nel codice corrente.
  • È probabile che si introducano bug se si tenta di far passare il codice corrente a FxCop e/o StyleCop
  • Molte regole FxCop hanno un valore minimo o nullo a meno che terze parti non stiano scrivendo nuovamente il codice delle DLL.
  • Non è necessario utilizzare uno strumento di controllo se si ignorano 101 avvisi da esso, poiché non si individuerà mai l'importante a cui tieni.

Penso che scende alla possibile riduzionenel costo di mantenere la vostra base di codice corrente rispetto al costo di ottenere la base di codice per passare gli strumenti di controllo.Una base di codice più coerente avrà un costo inferiore di manutenzione, ma questo è solo di valore se si apportano molte modifiche al codice.

+0

Ritengo che questo commento trasmetta il fatto errato che il codice funzionante è un buon codice, potrebbe non esserlo. C'è un valore immenso per il buon codice. L'85% del tempo è dedicato alla manutenzione, un buon codice migliora la manutenzione. C'è un enorme valore nel cambiare il codice che sta funzionando, tanto più che il codice che non lo è! Il codice che funziona può essere lasciato per lunghi periodi di tempo, dovrebbe essere documentato e documentato bene. Dovrebbe seguire una serie di standard per lo stile e il design che si prevede di utilizzare in futuro, e più di ogni altro codice sarà facile da comprendere per i futuri programmatori. –