News
Tool-Tipp: Codereview leicht gemacht mit Checkstyle

Die Information ist ein schnelllebiges Gut. Jeden Tag werden wir mit hunderten Informationen zugemüllt. Deshalb sind wir bestrebt uns auf das Wesentliche zu konzentrieren und nur substantiell nachhaltige Informationen bereitzustellen.

Icon Unternehmen

Jeder Programmierer, der in einem Team arbeitet, wird früher oder später damit konfrontiert, Quellcode eines anderen Teammitglieds weiter zu entwickeln oder Bugs zu beheben.
Damit dies möglichst ohne lange Einarbeitungszeit vonstattengehen kann, ist es von Vorteil, wenn alle an einem Projekt beteiligten Teammitglieder einen definierten Programmierstil (Coding Conventions) einhalten.
Ein einheitlicher Programmierstil erleichtert also die Arbeit erheblich – insbesondere bezüglich der Lesbarkeit, Verständlichkeit und Wartbarkeit von Quelltext. Vermeidbare Fehlerquellen können so eliminiert werden.

Zu kontrollieren, ob die Coding Conventions eingehalten wurden, wäre für einen menschlichen Reviewer eine äußerst mühselige Angelegenheit. Aber glücklicherweise gibt es auch dafür unterstützende Tools wie zum Beispiel Checkstyle.

Checkstyle ist ein Open Source Programm und steht in Form von Plugins als Werkzeug für verschiedene Einsatzgebiete (Eclipse, Maven, IntelliJ, Netbeans ...) zur Verfügung.

Anhand des Elipse-Plugins soll hier die Konfiguration und Handhabung beschrieben werden.

Installation: 

Über Eclipse Marketplace...

 

 ...oder Install New Software

 

Konfiguration:

Nach erfolgreicher Installation kann Checkstyle über Window -> Preferences -> Checkstyle entsprechend der Coding Conventions konfiguriert werden.

 

Für den Schnellstart stehen einige Built-In-Konfigurationen zur Verfügung.
In der Regel wird man aber eine eigene Konfiguration verwenden wollen. Diese muss zunächst über 'New..' erstellt werden.

 

Im folgenden Dialog wählt man aus, ob es sich um eine interne Konfiguration oder eine Konfiguration mit einer externe Konfigurationsdatei handelt. Eine solche Konfigurationsdatei ist im folgenden Beispiel zu sehen:

 

Sie setzt sich im Wesentlichen aus Modulen zusammen, die festlegen, was zu prüfen ist. Man könnte die gesamte Konfiguration über diese XML-Datei definieren, jedoch empfiehlt sich die Nutzung der GUI, mit der sowohl interne als auch externe Konfigurationen bearbeitet werden können. Dies ist intuitiver und die GUI bietet gute Beschreibungen darüber, was die einzelnen Module leisten.
Will man eine Konfiguration nicht von Grund auf selbst erstellen, so lässt sich auch eine bestehende Konfiguration in eine XML-Datei exportieren und diese dann als Basis für die eigene Konfiguration verwenden.

Durch Klick auf 'Configure...' kann die ausgewählte Konfiguration nun entsprechend der Coding Conventions angepasst werden.

 

Über das Kontextmenü einer Klasse, eines Packages oder eines Projektes ist das Untermenü 'Checkstyle' verfügbar, worüber Checkstyle auf die gewählte Quelle anwendbar ist.

 

Die Lupen-Icons am linken Rand des Editor-Fensters weisen auf Style-Fehler hin, ebenso wie die 'Problems'-View mit detaillierteren Informationen über die gefundenen Verstöße - in diesem Fall auf die gern vergessenen Javadoc-Kommentare, ein fehlendes Leerzeichen sowie die falsch platzierten geschweiften Klammern am Anfang der main-Methode und der for-Schleife.

Mit ein wenig Einarbeitung in das Thema Checkstyle ist es auch nicht schwer, eigene Checks zu entwickeln und zu integrieren. Weiterführende Informationen dazu gibt es unter dem Link http://checkstyle.sourceforge.net/writingchecks.html.

Fazit:

Checkstyle findet zwar keine Bugs, ist aber wie anfangs schon erwähnt ein Tool, was den Aufwand des Codereviews minimiert und die Effizienz der Zusammenarbeit innerhalb des Teams steigert.
Ebenso animiert es den Programmierer, sich einen 'guten' Programmierstil anzueignen, indem es ihm Verstöße gegen die geltenden Code Conventions während der Entwicklungsphase anzeigt.