2015-12-06 28 views
8

Ultimamente sto cercando il miglior set di strumenti per eseguire l'ispezione del codice. Il mio IDE è Intellij 15.0 e so che c'è una buona capacità di ispezione, ma quando guardo su Internet non ho trovato un buon confronto tra il codice di ispezione incorporato di Intellij e questi tre. Qualcuno che li ha provati tutti può dare qualche best practice su cosa usare? Intellij li copre tutti?Codice di ispezione incorporato IDEA Intellij rispetto a checkstyle, PMD e findbugs

So che i findbug funzionano a livello binario ma lo lasciano ancora nel confronto.

risposta

10

In Checkstyle progetto stesso, usiamo tutti questi strumenti: Checkstyle, PMD, FindBugs e IntelliJ IDEA inspections.

Ecco le mie osservazioni:

  • Non v'è alcun sostituto per Checkstyle quando si tratta di formattazione, spazi bianchi, bretelle di collocamento, Javadoc e lo stile del codice generale. C'è qualche sovrapposizione con IntelliJ al naming e alcune cattive pratiche, ma il gioco è fatto.
  • Le regole di PMD sono abbastanza simili a quelle di IntelliJ. Entrambi gli strumenti mirano principalmente a rilevare errori tipici o cattive pratiche. Troverete comunque alcune uniche regole PMD utili, solo alcuni esempi casuali: BigIntegerInstantiation, CommentDefaultAccessModifier, SingletonClassReturningNewInstance.
  • Non mi sarei mai dimesso da FindBugs in favore di qualche altro strumento. FindBugs si concentra solo sulla ricerca di veri bug nel codice con bassa percentuale di falsi positivi. Di solito, non richiede quasi nessuna configurazione, basta abilitare tutte le regole e dormire al sicuro. Ovviamente c'è un po 'di sovrapposizione con IntelliJ, ma più errori vengono rilevati, meglio è.

IntelliJ IDEA ispezioni sono un grande strumento, in quanto contengono un sacco di regole uniche e affidabili. E non è solo Java: è possibile individuare immediatamente problemi in XML, Proprietà, SQL, Spring, HTML, CSS, ecc. Richiedono molte configurazioni e scelgono un set di regole corretto. L'abilitazione di tutte le regole segnalerebbe centinaia di migliaia di violazioni su ogni progetto più grande. Ed è difficile incorporare queste ispezioni in build Maven o Gradle in modo che il progetto sia auto-validante.

La mia raccomandazione è di utilizzare di tutti gli strumenti, poiché ognuno di essi contiene almeno una dozzina (a volte dozzine di dozzine) di controlli utili che non sono disponibili da nessun'altra parte.

+1

Grazie per la risposta Michal. Utilizzate i plug-in IntelliJ per tutti questi strumenti? Se inseriamo nello strumento immagine come SonarQube che verrà eseguito nell'elemento della configurazione, vengono ancora utilizzati tutti nell'IDE? – Idan

+0

Uso solo CheckStyle-IDEA, perché può eseguire un'analisi rapida in tempo reale e una rapida verifica di tutti i file prima del commit. I problemi del checkstyle sono i più comuni, quindi è davvero d'aiuto. Per PMD e FindBugs invoco 'mvn pmd: check findugs: check' o equivalente per Gradle. Le violazioni in questi strumenti sono meno comuni ma più gravi, quindi nel caso mi dimentichi qualcosa, CI fallirà comunque la costruzione. –