2009-06-09 16 views
11

Ho una base di codice piuttosto nuova scritta in C++. Sto già iniziando a vedere alcune cattive pratiche che si insinuano nel progetto (file di classe con oltre 1000 righe di codice, funzioni con molti parametri, ...).Metriche di codice e avvisi per C++

Vorrei interromperlo subito con alcuni strumenti automatici che possono essere agganciati alla build e controllare le pratiche di codifica scadenti. Che suggerimenti hai per questi strumenti? Mi interessano le metriche ma sono molto più interessato a un tocco stilistico che evidenzia le funzioni con 37 parametri.

+0

Duplicate: http://stackoverflow.com/questions/93260/a-free-tool-to- check-cc-source-code-against-a-set-of-coding-standards –

risposta

3

Come con gli altri non sono sicuro di uno strumento che giudichi lo stile. Ma CCCC produrrà numerosi parametri che possono aiutarti a trovare i punti problematici. Metriche come la complessità ciclomatica ti forniranno una prova quantitativa dei punti problematici. Il rovescio della medaglia è che dovrai incorporare queste metriche con una guida di stile che tu adotti o crei da solo.

+1

Nota che ormai CCCC è obsoleto. L'ultima attività sul loro sito web è del 2002 e supporta solo il framework Microsoft Visual Studio 2003. Ho anche avuto problemi a gestirlo, dal momento che non era molto user friendly. Raccomando caldamente SourceMonitor: http://www.campwoodsw.com/sourcemonitor.html invece, come suggerito da Torial. – ForceMagic

+1

@ForceMagic: Credo che CCCC sia ancora una scelta praticabile quando non si esegue Windows poiché SourceMonitor sembra richiedere Windows. C'è anche un plugin Jenkins per collegarlo a una build e visualizzare le regressioni. –

6

Mi dispiace non posso aiutarti per quanto riguarda lo stile, ma un grande strumento di misurazione che supporta C++ ed è free: SourceMonitor.

In particolare, si otterrà buone informazioni come complessità ciclomatica (che trovo di più valore per cattiva pratica di programmazione di numero di parametri), così come le linee di codice, la percentuale di commenti, la funzione più lunga, ecc

Provalo - ed è anche molto veloce.

+1

Quando si utilizza questo strumento, provare * Modified Complexity *. Sto citando la guida di SourceMonitor: * L'opzione di metrica Modified Complexity cambia il modo in cui la metrica di complessità viene definita per i nuovi checkpoint aggiunti a un progetto. Quando questa opzione è abilitata, SourceMonitor calcola la metrica di complessità aggiungendone una alla complessità per ciascuna istruzione switch. Le istruzioni case all'interno di un'istruzione switch sono analizzate per altre metriche, ma le dichiarazioni case non contribuiscono alla complessità (come fanno quando questa opzione non è abilitata) *. – Wolf

-1

Assicurati di compilare sempre con l'opzione del compilatore -Wall e fai pratica che nessun codice deve essere archiviato se gli avvisi persistono.

Trovare uno stile standard da seguire come this one.

+1

'-Wall' non avvisa automagicamente rispetto ai problemi OP menzionati (funzioni lunghe, elevata complessità ciclomatica). –

+0

Il tuo * questo * collegamento è rotto, il che rende l'intera frase inutile. Forse stai facendo riferimento alla [Guida di stile di Google C++] (https://google.github.io/styleguide/cppguide.html)? – Wolf

1

Metrix ++ corrisponde a questo caso d'uso e ha ottenuto diverse metriche probabilmente siete interessati a Controllare qui:. http://metrixplusplus.sourceforge.net/

+1

Di solito è considerato una buona forma per renderlo molto esplicito quando si consiglia il proprio prodotto. –

+0

Grazie. Saprà su questo e farà la prossima volta. La risposta corrisponde ancora alla domanda. – Andrew

Problemi correlati