Die Qualität und Lesbarkeit von Quellcode spielen eine entscheidende Rolle in der Softwareentwicklung. Um die Einhaltung eines konsistenten Code-Stils sicherzustellen, greifen Entwickler:innen auf Tools zurück, die Code automatisch formatieren können. Besonders in Java gibt es zahlreiche Lösungen, die sowohl in integrierten Entwicklungsumgebungen (IDEs) als auch auf der Kommandozeile eingesetzt werden können. Dieser Artikel fokussiert sich auf das automatische Formatieren von Java-Code mittels Kommandozeilentools und stellt die gängigsten Optionen vor, darunter Google Java Format, Spotless, Prettier, Checkstyle und OpenRewrite.


Warum Code-Formatierung wichtig ist

Die automatische Code-Formatierung bietet viele Vorteile:

  1. Einheitlichkeit: Sie stellt sicher, dass der gesamte Code einheitlich aussieht, unabhängig davon, wer ihn geschrieben hat.
  2. Zeitersparnis: Manuelle Formatierungen oder Code-Reviews, die sich auf Stilfragen konzentrieren, entfallen.
  3. Verbesserte Lesbarkeit: Gut formatierter Code ist einfacher zu verstehen und zu warten.
  4. Integration in CI/CD-Pipelines: Formatierungswerkzeuge können in den Entwicklungsworkflow integriert werden, um sicherzustellen, dass nur korrekt formatierter Code in das Repository gelangt.

Die Verwendung von Kommandozeilentools ist besonders nützlich, da sie unabhängig von der IDE funktionieren und sich leicht in automatisierte Prozesse integrieren lassen.


1. Google Java Format

Google Java Format ist eines der bekanntesten Tools zur Code-Formatierung in der Java-Welt. Es wurde von Google entwickelt, um den internen Java-Stilstandard durchzusetzen.

Funktionen

  • Strikter und unveränderbarer Formatierungsstil, basierend auf Googles Java-Stilrichtlinien.
  • Unterstützt Java-Versionen bis einschließlich der neuesten Releases.
  • Integration mit gängigen Build-Tools wie Maven und Gradle.

Installation

Das Tool kann direkt über die Kommandozeile oder als JAR-Datei verwendet werden.

# Herunterladen der JAR-Datei
curl -LJO https://github.com/google/google-java-format/releases/download/v1.17.0/google-java-format-1.17.0-all-deps.jar
Code-Sprache: PHP (php)

Verwendung

Nach der Installation kann das Tool wie folgt aufgerufen werden:

java -jar google-java-format-1.17.0-all-deps.jar --replace Pfad/zu/der/Datei.java

Der Parameter --replace sorgt dafür, dass die Datei direkt überschrieben wird.

Vor- und Nachteile

VorteileNachteile
Sehr einfach zu verwendenKeine Anpassungen möglich
Konsistenz mit Google-RichtlinienStrenger, manchmal zu restriktiver Stil

2. Spotless

Spotless ist ein mächtiges Tool, das für verschiedene Sprachen, einschließlich Java, verwendet werden kann. Es bietet mehr Flexibilität als Google Java Format und unterstützt eine Vielzahl von Konfigurationen.

Funktionen

  • Unterstützt Google Java Format, Eclipse Formatter und andere.
  • Kann für spezifische Projekteinstellungen konfiguriert werden.
  • Integration in Gradle und Maven.

Installation

Spotless kann als Plugin für Maven oder Gradle hinzugefügt werden, ist aber auch als eigenständiges CLI-Tool verfügbar.

# Gradle-Konfiguration
plugins {
    id 'com.diffplug.spotless' version '6.23.0'
}

spotless {
    java {
        googleJavaFormat() // Verwendung von Google Java Format
    }
}
Code-Sprache: PHP (php)

Verwendung

Einmal konfiguriert, kann Spotless mit einem einzigen Befehl den Code formatieren:

./gradlew spotlessApply

Für die Kommandozeile kann auch spotless-cli verwendet werden:

spotless apply --target Pfad/zu/der/Datei.java

Vor- und Nachteile

VorteileNachteile
Flexibel und anpassbarKomplexere Konfiguration
Unterstützt verschiedene FormatterAbhängigkeit von Java-Plugins

3. Prettier

Prettier ist ein beliebtes Tool zur Code-Formatierung, das ursprünglich für JavaScript entwickelt wurde, mittlerweile aber auch Java unterstützt.

Funktionen

  • Unterstützt mehrere Programmiersprachen.
  • Strikte Einhaltung eines spezifischen Formatierungsstils.
  • Integrierbar in verschiedene Entwicklungs-Workflows.

Installation

Prettier kann über npm installiert werden:

npm install --global prettier
Code-Sprache: PHP (php)

Verwendung

Prettier kann auf der Kommandozeile mit Java-Dateien verwendet werden:

prettier --write Pfad/zu/der/Datei.java

Vor- und Nachteile

VorteileNachteile
Einfach zu verwendenWeniger anpassbar für Java
Unterstützt Multi-Language-ProjekteNicht speziell für Java entwickelt

4. Checkstyle

Checkstyle ist in erster Linie ein Tool zur Code-Analyse, das aber auch Formatierungsrichtlinien durchsetzen kann. Es ist besonders in Enterprise-Projekten beliebt.

Funktionen

  • Umfangreiche Konfigurationsmöglichkeiten.
  • Integration in CI/CD-Pipelines.
  • Analyse und Berichterstellung über Verstöße gegen den Code-Stil.

Installation

Checkstyle wird häufig über Maven oder Gradle integriert, kann aber auch als eigenständiges CLI-Tool verwendet werden.

java -jar checkstyle-X.X-all.jar -c /google_checks.xml Pfad/zu/der/Datei.java

Verwendung

Um nur die Formatierung zu prüfen, kann Checkstyle wie folgt ausgeführt werden:

java -jar checkstyle-X.X-all.jar -c /sun_checks.xml Pfad/zu/der/Datei.java

Vor- und Nachteile

VorteileNachteile
Anpassbare RegelnKeine automatische Formatierung
Gut für Analyse und BerichteSteilere Lernkurve

5. OpenRewrite

OpenRewrite ist ein relativ neues Tool, das nicht nur Code-Formatierung, sondern auch Refactoring unterstützt.

Funktionen

  • Statische Analyse und automatische Formatierung.
  • Fokus auf größere Code-Refactorings und Optimierungen.
  • Unterstützt Java und andere JVM-basierte Sprachen.

Installation

OpenRewrite wird hauptsächlich über Maven oder Gradle integriert.

./gradlew rewriteRun

Vor- und Nachteile

VorteileNachteile
Unterstützung für RefactoringNoch in der Entwicklung
Anpassbare RegelnKomplexer Aufbau

Fazit

Jedes der vorgestellten Tools hat seine Vor- und Nachteile. Google Java Format und Spotless sind ideal, wenn es um einfache, schnelle Formatierung geht. Checkstyle eignet sich besonders, wenn zusätzlich zum Format eine Analyse der Code-Qualität notwendig ist. Prettier bietet sich an, wenn Multi-Language-Unterstützung gewünscht ist, während OpenRewrite leistungsstarke Refactoring-Möglichkeiten bietet.

Für die Integration in automatisierte Workflows oder CI/CD-Pipelines sind alle Tools geeignet. Die Wahl hängt von den spezifischen Anforderungen und dem gewünschten Grad an Anpassbarkeit ab. Ein konsistenter Code-Stil ist jedoch in jedem Fall ein Gewinn für die Produktivität und Zusammenarbeit im Team.