Java Code Qualität verbessern

Im Bereich der statischen Quellcodeanalyse gibt es einige Tools, welche auf unterschiedlichste Aufgaben spezialisiert sind. Ziele dieser Tools sind, Fehler zu finden, die Lesbarkeit des Codes zu verbessern und die Qualität des Quellcodes allgemein zu erhöhen. Heute werden wir uns einige dieser Tools ansehen.
Nachdem es im letzten Artikel um Findbugs und sinnvolle Alternativen dazu ging, geht es hier um Ergänzungen, welche die Qualität des Programmcodes weiter verbessern können. Dazu werden wir exemplarisch PMD und Checkstyle vorstellen.

Der Quellcode-Analyzer PMD bietet neben einigen anderen Features ebenfalls die Möglichkeit zur Suche nach potenziellen Bugs und könnte somit ebenfalls als Alternative zu Findbugs betrachtet werden. Allerdings ist PMD eher auf die Identifizierung von Bad Practices und die allgemeine Codeverschönerung (standardisiertes Naming von Variablen, Methoden und Klassen, nicht zu viele Codezeilen pro Klasse, keine unnötigen Imports, etc.) spezialisiert und sucht nicht ausschließlich nach potenziellen Bugs. Ein weiterer Unterschied zu Findbugs ist, dass PMD nur den Source Code analysiert, während Findbugs auf Basis des Byte Codes arbeitet. Dadurch entgehen PMD einige potenzielle Bugs, welche erst auf dem Byte Code Level ersichtlich werden.

Als weiteres Tool möchten wir Checkstyle vorstellen. Checkstyle analysiert ebenfalls den Quellcode, sorgt sich aber in erster Linie um die Einhaltung von Coding Conventions. Dazu gehört beispielsweise ein korrektes Code-Formatting, keine zu langen anonymen inneren Klassen aber auch Dinge wie die Vermeidung von Quelltextklonen (Duplicate Code), etc. Eine vollständige Liste aller Features von Checkstyle ist hier zu finden. Das Auffinden von Bugs gehört nicht zum Anwendungsbereich von Checkstyle.

Ein detaillierter tabellarischer Vergleich zwischen Findbugs, Checkstyle und PMD ist im Übrigen hier zu finden.

Serverseitige Codeanalyse

Diese clientseitigen Codeanalyseprogramme lassen sich auch als Plugin einzeln in Eclipse und IntelliJ integrieren, beziehungsweise sind sie teilweise schon vorinstalliert. Daneben gibt es auch noch Plattformen, wie SonarQube, welche sich neben der clientseitigen Einbindung in die IDE auch serverseitig in den Entwicklungsprozess integrieren lassen und dabei mehrere der oben genannten Tools zusammenfassen.

So kann SonarQube (ehemals Sonar) beispielsweise automatisch die Codequalität auf dem Buildserver in der Continuous Integration Pipeline begutachten. Anschließend werden die Ergebnisse und Statistiken in einem webbasierten Dashboard zur Verfügung gestellt. Da SonarQube modular aufgebaut ist, können mit relativ begrenztem Aufwand eigene oder fremde Plugins erstellt und integriert werden. Im Auslieferungszustand sind dabei die oben genannten Findbugs, PMD und Checkstyle als Plugins bereits vorinstalliert. Außerdem ist mit Surefire ein Testframework, sowie mit Cobertura ein Tool zur Analyse der Testabdeckung standardmäßig enthalten. Eine Übersicht zu den aktuell öffentlich verfügbaren Plugins ist hier zu finden.

Fazit

Unserer Meinung nach ist der sinnvollste Ansatz, all diese Tools zusammen mit Findbugs beispielsweise mit SonarQube zu kombinieren und den Code direkt im Repository analysieren zu lassen. Dadurch kann die allgemeine Codequalität und Qualität der Software stark erhöht werden. Zusätzlich der Bereich des Testing und der Testabdeckungsanalyse kann mit entsprechenden Plugins abgedeckt werden.

Short URL for this post: http://wp.me/p4nxik-2Om
This entry was posted in Java and Quality and tagged , , , , . Bookmark the permalink.

Leave a Reply