2013-03-29 14 views
5

Sto lavorando allo sviluppo Java. Recentemente sono entrato in una situazione in cui devo rispettare gli standard di codifica: ordinamento di membri e metodi, convenzioni di denominazione, sequenza di modificatori. Sto pensando ai metodi per automatizzare il controllo della conformità o generare una sorta di meccanismo per il riordino.Controlla automaticamente i file Java per la conformità allo standard di codifica

Stiamo sviluppando con Eclipse, ma la tecnologia sarebbe aperta. Un modo in cui potrebbe funzionare è generare uno strumento di builder esterno e aggiungerlo ai progetti. Lo svantaggio sarebbe che si applicherebbe automaticamente a tutti i file, che potrebbero incorrere in problemi con il codice legacy, facendo esplodere il conteggio degli errori fino a un livello in cui non è più una metrica ragionevole di conformità. Inoltre, rende le recensioni di codice molto più difficili, che non è voluto.

Un altro modo sarebbe una sorta di parser con solo capacità informative. Potremmo eseguire un processo all'interno di Jenkins, e questo sicuramente funzionerebbe, ma ciò significherebbe anche che il codice aveva già passato una recensione, che di solito è un po 'in ritardo per un controllo di conformità del codice.

Esistono metodi suggeriti o addirittura semplici per integrare tale funzionalità in IDE, nel sistema di controllo del codice sorgente (Mercurial) o persino in Jenkins? Come viene applicato altrove?

+0

TeamCity ha pretestati commettono, che si spera, può fare anche qualche controllo sulla conformità del codice. – Jayan

+4

Inizia con [PMD] (http://pmd.sourceforge.net/) e [CheckStyle] (http://checkstyle.sourceforge.net/) e passa ad altri "strumenti di analisi statici". – parsifal

+0

Guardare al CheckStyle al momento, non sembra essere in grado di definire liberamente le regole stesse, solo le regole da controllare (dobbiamo rispettare una sequenza di modificatori che differisce dagli standard di codifica Java). – 0xCAFEBABE

risposta

3

non mi consiglia di fare tali modifiche automaticamente. Anche se la maggior parte dei checkstyle/pmd è valida, a me capita di dover ignorare alcuni degli avvertimenti/errori. Inoltre - c'è solo una piccola serie di problemi così semplici. La maggior parte delle notifiche richiede operazioni più complesse e probabilmente non potrebbe essere eseguita senza l'interazione umana.

Sto utilizzando l'integrazione Sonar. Contiene molti controlli esterni come PMD, CPD, Checkstyle, Findbugs e può essere integrato con altri utili strumenti come Cobertura (statistiche di copertura del test). È quasi banale legare Sonar alla costruzione di Jenkins e cercare di evitare problemi importanti/critici potrebbe essere considerato un buon approccio.

Nell'ambiente di sviluppo utilizzo l'integrazione di Eclipse con findbugs. C'è anche qualche punto di integrazione con il sonar, ma richiede di inviare il codice al server o di eseguire il server localmente, cosa che personalmente non mi piace. Tuttavia, dopo alcuni cicli di lucidatura del codice dopo la revisione del codice in Sonar, noterai che tu (e gli altri membri del team) rispetti la maggior parte delle regole e controlli i rapporti su base giornaliera è sufficiente.

+0

_ "[SpotBugs] (https://spotbugs.github.io/) è il successore spirituale di FindBugs" _ – howlger

1

Una soluzione è utilizzare JCSC/checkstyle o altri strumenti che sono a riga di comando. Integralo con il tuo processo di compilazione. Lo sviluppatore individuale esegue questo sul suo ramo.

maggior parte degli strumenti si integrano bene con Jenkins (attraverso i plugin), che può essere utilizzato come cruscotto

1

Oltre alla risposta di @ Jayan, Jenkins ha uno CheckStyle plugin che visualizza i risultati di ogni esecuzione di CheckStyle e consente di impostare lo stato di generazione in base al numero di violazioni rilevate. Quindi sarebbero i passi di configurazione:

  1. Configurare il CheckStyle rules per soddisfare i vostri standard di codifica
  2. aggiungere un passaggio al vostro Jenkins costruire che corre CheckStyle
  3. Aggiungere una fase di post costruzione di pubblicare i risultati Checkstyle.
0

Jayan menziona checkstyle, che è ottimo per il controllo rispetto agli standard di codifica.

Ricordo di aver utilizzato Jalopy anni fa per la formattazione automatica del codice, potrebbe soddisfare anche le vostre esigenze.

In tutta onestà, tuttavia, non riformatterei automaticamente il codice. Usare strumenti come il check-up per aumentare gli avvertimenti è una cosa. Prendere il controllo del codice sorgente di uno sviluppatore è un altro, e la maggior parte delle persone lo trova terribilmente intrusivo e spiacevole. Inoltre, un errore in un programma di controllo del codice genererà nel peggiore dei casi avvisi non corretti. Un bug in un abbellitore di codice potrebbe corrompere e distruggere ore di lavoro.

Problemi correlati