Stylecop vs FXcop


Risposte:


171

Stylecop è uno strumento di analisi dello stile che funziona a livello di codice sorgente. Esiste principalmente per fornire un unico stile comune che i progetti gestiti possono utilizzare per rimanere coerenti nel più ampio mondo del software gestito. Prende decisioni riguardanti lo stile principalmente per evitare le guerre sante (dopo tutto, lo stile è quasi sempre una cosa intrinsecamente soggettiva). Non credo di aver mai incontrato qualcuno a cui sono piaciute tutte le regole di StyleCop, ma va bene così . Significa che StyleCop è generalmente un buon compromesso tra la vasta serie di linee guida di stile esistenti. (Se le regole di stylecop fossero altamente personalizzabili, oltre alla semplice abilitazione / disabilitazione, vanificherebbe l'intero scopo dello strumento.)

FxCop, d'altra parte, è uno strumento di analisi statica che funziona a livello di assembly gestito. Può ricevere indicazioni tramite attributi perché può vedere attributi su elementi di codice, ad es. Rileva problemi che possono essere visti a livello "binario" (per così dire) in contrapposizione a livello sintattico.

Per rispondere alla tua domanda, StyleCop non sostituisce FxCop e FxCop non sostituisce stylecop. Sono due strumenti diversi con due scopi diversi che possono entrambi fornire un reale vantaggio per il tuo codice.

(AKA, corro con entrambi. :))


Un paio di esempi di cose che uno potrebbe rilevare rispetto a cose che l'altro potrebbe rilevare:

Le violazioni di StyleCop potrebbero includere avvisi relativi a: spazi vuoti, formattazione, documentazione di metodi pubblici tramite commenti xml, ordine di definizione del metodo all'interno di una classe.

Le violazioni di FxCop potrebbero includere avvertimenti relativi a: globalizzazione, accoppiamento stretto, complessità ciclomatica, potenziali dereferenze nulle.


1
Sì, le risposte precedenti che confrontano i due sono sbagliate su tutti i fronti. StyleCop e FxCop eseguono due attività molto diverse e vale la pena indagare sul valore fornito da ciascuna sulla base del codice e sul motivo per cui dovresti eseguirle.
Jedidja

3
D'accordo che non tutte le regole di StyleCop sono buone, ma come dici tu quelle che non vuoi possono essere disabilitate. Stiamo usando StyleCop - dopo aver disabilitato le semplici regole stupide ci sta fornendo un buon valore - a basso costo ..! Consigliato. (nota che lo abbiamo odiato a prima vista ..)
stiank81

@ stiank81: Sì, all'inizio penso che tutti odino StyleCop. Dopo un po 'di tempo, però, i benefici realmente insediarsi e si dimostra di essere un molto utile strumento per la coerenza di tale sorgente. :)
Greg D

1
ottima risposta quello che stavo cercando :)
GibboK

16

stylecop funziona sul tuo codice sorgente C #. fxcop esamina il codice compilato da qualsiasi linguaggio .net.


Quindi, se usi Stylecop, FXCop può aggiungere valore?
JL.

Davvero, stai meglio usando FxCop.
Andrew Rollings

Almeno per ora, finché non diventa più configurabile. :)
Andrew Rollings

1
È improbabile che stylecop diventi significativamente più configurabile. Una caratteristica molto più importante per stylecop è la correzione automatica delle violazioni di stile.
Greg D,

usiamo Resharper per rendere automaticamente il codice conforme alle regole di stylecop. Questo da solo vale il prezzo di acquisto. E ottieni tutti gli altri vantaggi oltre a quello.
Nessun rimborso Nessun reso

11

Un'alternativa o un buon complemento a FxCop / StyleCop sarebbe utilizzare lo strumento commerciale NDepend . Con questo strumento è possibile scrivere la regola del codice su query LINQ (ovvero CQLinq) . Disclaimer: sono uno degli sviluppatori dello strumento

Più di 200 le regole del codice sono proposti di default, questi includono il design , l'architettura , la qualità del codice , l'evoluzione del codice , le convenzioni di denominazione , codice morto , l'uso NET Fx ...

CQLinq è dedicato alla scrittura di regole del codice che possono essere verificate in tempo reale in Visual Studio o che possono essere verificate durante il processo di compilazione e riportate in un report HTML / javascript .

La forza di CQLinq rispetto a FxCop o StyleCop, è che è semplice scrivere una regola del codice e ottenere risultati immediati . Vengono proposte funzionalità per esplorare gli elementi del codice abbinato. In concreto questo sembra così:

Regola del codice CQLinq


6

FXCop esegue l'analisi statica del codice degli assembly di codice gestiti. Consideralo come trovare problemi che causeranno problemi in fase di esecuzione o che influenzeranno il modo in cui lo sviluppatore ritiene che verrà eseguito il codice (codice non raggiungibile).

StyleCop analizza la struttura del tuo codice dal punto di vista del testo. Considerali come problemi che influenzeranno la tua esperienza di sviluppo e progettazione (formattazione, convenzioni di denominazione, documentazione)

Sono entrambi strumenti MOLTO preziosi e dovresti usarli entrambi, ma si concentrano su problemi diversi.


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.