Esiste un semplice linter Java della CLI? [chiuso]


88

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

Idealmente ha bisogno di controllare le importazioni e le variabili inutilizzate, che le linee guida di stile siano seguite, le eccezioni siano usate correttamente, ecc. Anche se qualche sottoinsieme di queste caratteristiche sarebbe migliore di quello che abbiamo ora - niente!


2
//, Non è questa una richiesta per una raccomandazione software?
Nathan Basanese

3
Non so se dovrei chiedere qui o su meta, ma cosa c'è di sbagliato in domande come questa che chiedono consigli? Sicuramente non esiste una risposta unica e oggettiva a questa domanda, ma è anche il caso di molte domande tecniche. Questa domanda potrebbe essere riformulata come "Non ho un linter e non so quali strumenti sono disponibili, attuali e ampiamente utilizzati". Sarebbe d'aiuto? Preferirei di gran lunga trovare una Q / A curata, classificata e registrata in data su StackOverflow piuttosto che altrove. Dove dovrebbero andare le persone con questo tipo di domande, se non qui?
Kyle Krull

Risposte:


81
  • SpotBugs (precedente Findbugs ) per trovare bug esistenti. MOLTO BUONA!
  • PMD per la ricerca di modelli che possono portare a bug (ad es. Variabili inutilizzate)
  • Stile di controllo per applicare standard e convenzioni di codifica (ad esempio spazi bianchi, Javadoc)
  • Error Prone si aggancia direttamente alla fase di compilazione dell'applicazione

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


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

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

Sì, obiettivi molto diversi. Findbugs cerca di trovare bug REALI, a volte eseguendo un'analisi approfondita. PMD cerca solo modelli noti per portare a volte a bug. Personalmente, utilizzo FindBugs e Checkstyle poiché c'è meno sovrapposizione.
mikeslattery

potresti menzionare che pmd ha 2 diversi tipi di controlli, pmd e cpd.
jtahlborn

4
Findbugs ora è SpotBugs (su GitHub )
Matruskan

12

Inoltre, controlla Sonar , che combina molti degli altri strumenti e fornisce anche una bella vista.

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


Non sono sicuro di come aggiungerlo a un hook post-commit, ma http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven potrebbe essere un buon punto di partenza (specialmente se stai usando Maven).

Forse prendi in considerazione anche l'utilizzo di uno degli approcci elencati in http://docs.codehaus.org/display/SONAR/Continuous+Integration poiché sembra che tu stia cercando di cercare strumenti migliori per tutto il tuo team ("Anche se qualche sottoinsieme di quelle caratteristiche sarebbero migliori di quelle che abbiamo adesso - niente! "


2
+1 Quattro anni dopo la domanda, SonarQube sembra essere più attivo, moderno e completo. Un tempo combinava gli strumenti sopra menzionati, ma ora li implementa in modo nativo evitando le sovrapposizioni blog.sonarsource.com/…
user2518618

-1

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

Gli strumenti sono nella fase iniziale, ma ci sto lavorando quasi ogni giorno. È disponibile qui:

https://github.com/ftomassetti/effectivejava

Per favore fatemi sapere cosa ne pensate e sentitevi liberi di fare domande.


3
L'ultimo impegno di questo progetto è stato di 2 anni fa. Non sono sicuro che sia ancora in fase di sviluppo attivo.
Daniel Eagle il

No non lo è. Ma poi ho iniziato a lavorare su JavaParser. Quel progetto non ti dà una CLI ma potrebbe essere costruito sopra di esso.
Federico Tomassetti
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.