Sono disponibili strumenti che calcoleranno le metriche del codice (ad esempio numero di righe di codice, complessità ciclomatica, accoppiamento, coesione) per il tuo progetto e nel tempo produrranno un grafico che mostra le tendenze?
Sono disponibili strumenti che calcoleranno le metriche del codice (ad esempio numero di righe di codice, complessità ciclomatica, accoppiamento, coesione) per il tuo progetto e nel tempo produrranno un grafico che mostra le tendenze?
Risposte:
Nel mio ultimo progetto ho usato SourceMonitor . È un ottimo strumento gratuito per l'analisi della metrica del codice.
Ecco un estratto dal sito ufficiale di SourceMonitor:
- Raccoglie le metriche in un singolo passaggio rapido attraverso i file di origine.
- Misura le metriche per il codice sorgente scritto in C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6) o HTML.
- Include metriche a livello di metodo e funzione per C ++, C, C #, VB.NET, Java e Delphi.
- Salva le metriche nei punti di controllo per il confronto durante i progetti di sviluppo software.
- Visualizza e stampa le metriche in tabelle e grafici.
- Funziona all'interno di una GUI standard di Windows o all'interno degli script utilizzando file di comandi XML.
- Esporta le metriche in file XML o CSV (valori separati da virgole) per ulteriori elaborazioni con altri strumenti.
Per .NET oltre a NDepend, che è semplicemente lo strumento migliore, posso consigliare vil .
I seguenti strumenti possono eseguire l'analisi delle tendenze:
Sonar è sicuramente uno strumento da tenere in considerazione, soprattutto per i progetti Java. Tuttavia gestirà anche codice PHP o C / C ++, Flex e Cobol.
Ecco uno screenshot che mostra alcune metriche su un progetto:
testo alternativo http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png
Nota che puoi provare lo strumento utilizzando il loro sito demo su http://nemo.sonarsource.org
NDepend per .net
Stavo anche cercando uno strumento / plug-in per la metrica del codice per il mio IDE, ma per quanto ne so non ce ne sono (per eclipse cioè) che mostrano anche un grafico della complessità in un periodo di tempo specificato. Tuttavia, ho trovato il plug-in delle metriche di eclipse , in grado di gestire:
E durante l'utilizzo, non ho perso anche l'opzione grafica che stai cercando.
Penso che, se non trovi alcun plugin / strumento in grado di gestire la rappresentazione grafica nel tempo, dovresti cercare lo strumento che più ti si addice e che ti offre tutte le informazioni di cui hai bisogno; anche se le informazioni fornite sono solo per la build corrente del tuo progetto.
Come nota a margine, il plug-in delle metriche di eclipse ti consente di esportare i dati in un file esterno (il link va a un esempio), quindi se usi uno strumento di controllo del codice sorgente, e dovresti !, puoi sempre esportare i dati per lo specifico crea e archivia il file insieme al codice sorgente, in questo modo hai ancora un modo (di base) per tornare indietro nel tempo e controllare le differenze.
tieni presente che ciò che misuri è ciò che ottieni. loc non dice nulla sulla produttività o sull'efficienza.
valuta un programmatore per righe di codice e otterrai .. righe di codice. lo stesso argomento vale per altre metriche.
otoh .. http://www.crap4j.org/ è una metrica molto conservativa e utile. pone la complessità in relazione alla copertura.
Non dipende, lo sto usando ed è il migliore per questo scopo. Controlla questo: http://www.codeproject.com/KB/dotnet/NDepend.aspx
Per quanto riguarda lo strumento NDepend , viene fornito con 82 metriche di codice diverse, dal numero di righe di codice, al metodo Rank (popolarità), complessità ciclomatica, mancanza di coesione dei metodi, copertura percentuale (estratta da NCover o VSTS), profondità di ereditarietà .. .
Con il suo sistema di regole, NDepend può anche trovare problemi e stimare il debito tecnico che è una metrica di codice interessante (quantità di sforzo di sviluppo per risolvere i problemi rispetto alla quantità di tempo di sviluppo rovinato all'anno per lasciare che i problemi non risolti).
Tutte queste metriche sono dettagliate qui .
Se ti trovi nello spazio .NET, CodeRush di Developer Express fornisce LOC, Cyclomatic Complexity e (piuttosto eccellente, IMHO) Maintenance Complexity analisi del codice in tempo reale.
(Ci scusiamo per il link Maintenance Complexity; sta andando alla cache di Google. L'originale sembra essere offline ATM).
Atlassian FishEye è un altro ottimo strumento per il lavoro. Si integra con il tuo sistema di controllo del codice sorgente (attualmente supporta CVS, SVN e Perforce) e analizza tutti i tuoi file in questo modo. L'analisi è piuttosto semplice e il prodotto stesso è commerciale (ma a prezzi molto ragionevoli, IMO).
Puoi anche ottenere un componente aggiuntivo chiamato Crucible che facilita le revisioni del codice tra pari.
Per Visual Studio .NET (almeno C # e VB.NET) trovo che StudioTools gratuito sia estremamente utile per le metriche. Aggiunge anche una serie di funzionalità trovate in strumenti commerciali come ReSharper .
Code Analyzer è uno strumento semplice che genera questo tipo di metriche.
(fonte: teel.ws )
Per Python, pylint può fornire alcune metriche sulla qualità del codice.
C'è anche un plugin per la metrica del codice per il riflettore , nel caso in cui si utilizzi .NET.
Consiglierei Code Metrics Viewer Exention per Visual Studio.
È molto facile analizzare la soluzione in una volta, anche fare il confronto se hai fatto progressi ;-)
Maggiori informazioni qui sulle funzionalità
Sul fronte PHP, credo che ad esempio phpUnderControl includa metriche tramite phpUnit (se non sbaglio).
Tieni presente che le metriche sono spesso errate. Ad esempio, un programmatore che sta lavorando su problemi banali produrrà più codice e lì per avere un aspetto migliore sui tuoi grafici, rispetto a un programmatore che risolve i problemi complessi.
Se stai cercando un'analisi delle tendenze, significa davvero qualcosa da misurare oltre lo SLOC?
Anche se stai solo eseguendo un grep per i punti e virgola finali e contando il numero di righe restituite, ciò che stai cercando è la coerenza nella tecnica di misurazione SLOC. In questo modo la misurazione odierna può essere confrontata in modo significativo con quella del mese scorso.
Non riesco davvero a vedere cosa darebbe una tendenza della complessità ciclometrica McCabe? Penso che CC dovrebbe essere utilizzato di più per un'istantanea di qualità per fornire feedback agli sviluppatori.
Modifica: Ooh. Ho solo pensato a un paio di altre misurazioni che potrebbero essere utili. Commenti come percentuale di SLOC e copertura del test. Nessuno dei quali vuoi lasciarti sfuggire. Ritornare per aggiornare uno di questi non è mai così divino come farli "nella foga del momento!"
HTH.
Saluti,
rapinare
Scitools 'Understand ha la capacità di generare molte metriche di codice per te. Non ho molta esperienza con le funzionalità di metrica del codice, ma le funzionalità di analisi statica in generale erano buone e il prezzo era molto ragionevole. Il supporto è stato eccellente.
Project Code Meter fornisce un rapporto sulla cronologia dello sviluppo differenziale (in formato Excel) che mostra le metriche di avanzamento della codifica in SLOC, tempo e percentuale di produttività (la stima del tempo si basa sulla complessità ciclomatica e altre metriche). Quindi in Excel puoi facilmente produrre il grafico che desideri.
vedere questo articolo che lo descrive passo passo: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
Per Java puoi provare il nostro strumento, QualityGate , che calcola più di 60 metriche del codice sorgente, tiene traccia di tutte le modifiche nel tempo e fornisce anche una valutazione complessiva per la manutenibilità del codice sorgente.