Checkstyle
# Checkstyle

Checkstyle ist ein in der Softwareentwicklung verwendetes Werkzeug für die Statische Code-Analyse zur Prüfung des Programmierstils von Java-Sourcecode.

## Einsatzgebiet

Der in Softwareentwicklungsprojekten verwendete Programmierstil kann die Softwarequalität, Lesbarkeit und Wiederverwendbarkeit verbessern. Damit können die Kosten der Entwicklung und Wartung der Software reduziert werden. Checkstyle kann eine Reihe von automatisierbaren Prüfungen des Programmierstils durchführen. Diese Prüfungen können einzeln ein- und ausgeschaltet werden, sowie für den in dem zu prüfenden Projekt definierten Programmierstil konfiguriert werden. Das Fehlschlagen einer Prüfung führt je nach Konfiguration der Prüfung zu einem Fehler oder einer Warnung. Checkstyle kann um eigene Prüfungen erweitert werden.

Checkstyle ist kein Werkzeug zur automatisierten Erkennung von Programmierfehlern. Durch das Aufzeigen unerwünschter Programmierstile können aber mit Hilfe von Checkstyle Programmierfehler gefunden oder vermieden werden.

Checkstyle ist auch kein Werkzeug zur automatisierten Behebung fehlerhafter Programmierstile. Für Fehler in der Formatierung des Codes können Programme zur Quelltextformatierung eingesetzt werden.

## Module

Checkstyle kommt mit einer Reihe von Modulen, die Prüfungen zu bestimmten Themen enthalten. Diese Module können um eigene Module mit eigenen Prüfungen erweitert werden.

* Annotations – Prüfungen zur korrekten Verwendung von Annotationen
* Block Checks – Prüfungen von Codeblöcken
* Class Design – Prüfungen zum Softwaredesign
* Coding – Prüfungen allgemeiner Kodierungsrichtlinien
* Duplicate Code – Prüfungen auf das Vorhandensein doppelten Codes (bis Version 6.1.1)
* Headers – Prüfungen bezüglich Kopfzeilen von Sourcecodedateien
* Imports – Prüfungen zur Verwendung von Imports
* Javadoc Comments – Prüfungen zum Vorhandensein, der Vollständigkeit und Formatierung von Javadoc-Kommentaren
* Metrics – Prüfungen der Einhaltung diverser Softwaremetriken
* Miscellaneous – diverse nicht in die anderen Module einordenbare Prüfungen
* Modifiers – Prüfungen zur korrekten Verwendung von Zugriffsmodifikatoren
* Naming Conventions – Prüfungen der Einhaltung definierter Namenskonventionen
* Regexp – Selbst mittels regulären Ausdrücken konfigurierbare Prüfungen
* Size Violations – Prüfungen zur Größe von Klassen, Methoden, Anzahl Parameter usw.
* Whitespace – Prüfungen zur Formatierung des Codes hinsichtlich Leerzeichen

## Einsatz

Checkstyle wird als Java Archive geliefert und kann somit in jeder Java Virtual Machine und als Apache Ant Task laufen. Eine Reihe von Werkzeugen stellen Plugins für Checkstyle zur Verfügung, unter anderen auch Eclipse, Apache Maven oder SonarQube.

## Geschichte

Checkstyle wurde ursprünglich 2001 von Oliver Burn entwickelt und wird jetzt als Open-Source-Software von einer Reihe von Entwicklern gewartet und weiterentwickelt.

## Alternativen

Im Java-Umfeld werden üblicherweise neben Checkstyle auch noch PMD und FindBugs für ähnliche Zwecke wie Checkstyle eingesetzt. Siehe auch Liste von Werkzeugen zur statischen Codeanalyse.

