2010-04-04 8 views
7

Sto cercando uno script/strumento che possa essere personalizzato per verificare e applicare le convenzioni di codifica/denominazione su un codice C/C++.Test delle convenzioni di codifica e denominazione del codice C/C++

Si dovrebbe verificare per esempio:

  • linee di codice sono avvolti ad una certa lunghezza.
  • variabili private hanno il prefisso _
  • codice è rientrato correttamente.
  • Tutte le funzioni sono documentate.

Molti dei progetti a cui sto lavorando sono esternalizzati da clienti che tendono ad avere varie convenzioni interne di codifica e denominazione.

+4

certamente non vogliono che il qualsiasi variabile per iniziare con '_', regole per l'utilizzo' _' nei nomi sono complicate , perché un buon numero è riservato ai compilatori di compilatori, ecc ... –

+3

@Matthieu: Solo i nomi che iniziano con due trattini bassi, o un trattino basso e una lettera maiuscola sono riservati. Finché tutte le sue variabili private iniziano con una lettera di sottolineatura e una lettera minuscola (o un trattino basso e un numero), va bene. –

+2

@Matthieu: la prefissazione delle variabili membro con '_' è una convenzione piuttosto comune e non problematica. Gli identificatori che iniziano con '_' sono riservati solo nello spazio dei nomi globale. Vedi per es. http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/language/ref/ident.htm –

risposta

2

Lo strumento GNU indent può fare un po 'di quello che stai chiedendo. Non è sicuro se può controllare la documentazione, ma il resto sembra fattibile

+0

Mi piace il rientro GNU, ma non verifica le convenzioni di codifica e denominazione. –

3

Non so se vale davvero il tempo, ma se proprio vuoi, puoi provare a costruire qualcosa di simile a google's cpplint, che controlla il loro style guide .

Personalmente ritengo che le recensioni approfondite e l'impegno delle persone a seguire determinate convenzioni sia un modo molto migliore per assicurarsi che il codice sia "rientrato correttamente" e le variabili siano denominate in modo coerente. Forse investi nella creazione di un documento come ha fatto Google, descrivendo i dettagli di uno stile accettabile, e chiedi alla gente di accettarlo e attenersi ad esso.

Perché gli umani sono meglio di una sceneggiatura? La risposta è abbastanza semplice: le persone dovranno occuparsi del codice più tardi, a cui dovrebbero interessare riguardo alle cose che stanno scrivendo. Un nome variabile come i andrà bene per uno script, ma non mi scivolerà dai miei occhi, se si tratta di un clientCount, dovrebbe essere nominato correttamente, lo script che sarebbe in grado di farlo potrebbe prendere il controllo del mondo piuttosto presto. :)

+0

Grazie per aver condiviso questo. –

+0

Sembra che cpplint non controlli le convenzioni di denominazione delle variabili e delle classi? – cxwangyi

3

Universal Indent avvolge un sacco di strumenti di indentazione in una bella GUI. Se qualcosa di adatto a te è probabilmente incluso. (Here è l'elenco delle caratteristiche) Sono supportati tutti i principali SO.

ci sono anche altri strumenti di controllo per altre cose:

pelucchi per la sicurezza e Varie altre cose.

Per i programmi Qt è possibile utilizzare Krazy. È un po 'una seccatura trovare, scaricare e andare avanti, dato che è nascosto nelle profondità dell'albero dei sorgenti di KDE (sottodirectory di garanzia della qualità ... da qualche parte). Ma una volta funzionante è davvero fantastico. Controlla tutti i tipi di cose carine. Come intestazioni di Qt non utilizzate. Utilizzo errato delle stringhe. Gli stati tr() mancanti per le stringhe visibili dell'utente, i costrutti di iterazione bizzarri, punto punto punto.

Ciò che è ovvio è che tutti gli strumenti menzionati sono personalizzabili.

1

Fondamentalmente, ciò che altre persone hanno detto. Ma posso solo sottolineare che:

  • Tutte le funzioni sono documentate.

non può essere controllato da uno strumento, richiede la comprensione e gli occhi umani. Ho il sospetto che tutti abbiamo visto cose come questa:

//------------------------------------------------------------- 
// Name: foo 
// Purpose: 
// Returns: integer 
//------------------------------------------------------------- 

In altre parole, boilerplate "documentazione" che ti dice meno di niente. Questo tipo di cose può essere sradicato solo dalle revisioni del codice.

0

Se si dispone di un sacco di soldi, è necessario controllare Klocwork. Ha la capacità di controllare il codice sorgente per seguire le linee guida di stile. L'ho usato in diversi negozi. A lotto di lavoro da configurare e gestire, ma molto potente.

0

Uso Capisco 4 C++ di scitools. Viene fornito con perl e C api. Tuttavia ho scritto un'API gestita per questo. Questo strumento ti permette di scansionare il tuo codice sorgente e analizzarlo come fa la riflessione per il codice nativo. Funziona molto bene permettendoti di ottenere i nomi delle tue variabili, classi ecc ... Personalmente ho scritto dozzine di strumenti di analisi statica sul lavoro usando questa API. Sarebbe facile applicare tutti i tipi di standard di codifica utilizzando questo strumento. Specialmente il nome della variabile standard.

Il link per il prodotto: http://www.scitools.com/ e il mio wrapper gestito: http://understandapi.codeplex.com/

Problemi correlati