2013-02-04 5 views
39

Ho cercato di trovare un lintero Java in grado di funzionare sulla CLI separata da Eclipse che posso chiamare come hook di commit per git o dal nostro script di build automatico. Esiste una cosa del genere?C'è un semplice linter CLI Java?

Idealmente, è necessario controllare le importazioni e le variabili inutilizzate, seguire le linee guida sullo stile, utilizzare le eccezioni in modo appropriato, ecc. Sebbene alcune di queste funzionalità siano migliori di quelle che abbiamo adesso - niente!

+1

//, Non è una richiesta di raccomandazione software? –

risposta

36
  • Findbugs per trovare bug esistenti. MOLTO BENE!
  • PMD per i modelli trovando che possono portare a bug (ad esempio variabili inutilizzate)
  • Checkstyle di far rispettare gli standard di codifica e convenzioni (ad esempio spazi, Javadoc)
  • Error Prone ganci a destra in fase di compilazione della propria applicazione

Tutti questi strumenti hanno alcune regole sovrapposte. Esistono molti altri strumenti simili, ma questi sono i più popolari e supportati.

+0

Diresti che Findbugs e PMD fanno cose diverse? L'ultima volta che ho esaminato questo aspetto, ho concluso che erano abbastanza simili da averne solo bisogno (e scelto PMD). Abbiamo anche eseguito Checkstyle, e sì, ho scoperto che anche PMD e Checkstyle si sovrappongono. –

+0

@ TomAnderson - direi che sicuramente fanno cose diverse, sì. c'è un valore per entrambi (ovviamente c'è anche sovrapposizione). – jtahlborn

+0

Sì, obiettivi molto diversi. Findbugs cerca di trovare bug ATTUAL, a volte facendo analisi approfondite. PMD cerca solo modelli noti a volte portare a bug. Personalmente, utilizzo FindBugs e Checkstyle perché c'è meno sovrapposizione. – mikeslattery

4

Inoltre, dai un'occhiata a Sonar, che combina molti degli altri strumenti e fornisce anche una bella vista.

regole da Checkstyle, FindBugs, PMD, Clirr, fb-contrib.


Non so esattamente come inserirlo ad un gancio post-commit, ma http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven potrebbe essere un buon punto di partenza (soprattutto se si sta utilizzando Maven).

Forse anche considerare l'utilizzo di uno degli approcci elencati http://docs.codehaus.org/display/SONAR/Continuous+Integration poiché sembra che si può essere cercando di guardare per una migliore attrezzatura per tutta la squadra ("Anche se alcuni sottoinsieme di quelle caratteristiche sarebbe meglio che ciò che abbiamo hanno ora - niente! "

+0

+1 Quattro anni dopo la domanda, SonarQube sembra essere più attivo, moderno e completo. Univa gli strumenti sopra menzionati, ma ora li implementa in modo nativo evitando le sovrapposizioni https://blog.sonarsource.com/already-158-checkstyle-and-pmd-rules-deprecated-by-sonarqube-java-rules/ – user2518618

1

Questo è ESATTAMENTE quello a cui sto lavorando: uno strumento CLI-friendly da utilizzare per verificare la qualità del codice Java e ha anche una modalità interattiva È possibile eseguire singole query (per verificare la presenza di singoli avvisi) o tutte le domande insieme

Gli strumenti sono nella fase iniziale ma ci sto lavorando quasi ogni giorno. e:

https://github.com/ftomassetti/effectivejava

Per favore fatemi sapere cosa ne pensate e non esitate a fare domande.

+0

L'ultimo commit di questo progetto è stato 2 anni fa. Non sono sicuro se questo sia attivamente sviluppato più. –