{"id":507,"date":"2024-11-13T10:36:54","date_gmt":"2024-11-13T09:36:54","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=507"},"modified":"2024-12-03T10:39:59","modified_gmt":"2024-12-03T09:39:59","slug":"automatisches-formatieren-von-java-code-mit-kommandozeilentools","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=507","title":{"rendered":"Automatisches Formatieren von Java-Code mit Kommandozeilentools"},"content":{"rendered":"\n<p>Die Qualit\u00e4t 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\u00fcck, die Code automatisch formatieren k\u00f6nnen. Besonders in Java gibt es zahlreiche L\u00f6sungen, die sowohl in integrierten Entwicklungsumgebungen (IDEs) als auch auf der Kommandozeile eingesetzt werden k\u00f6nnen. Dieser Artikel fokussiert sich auf das automatische Formatieren von Java-Code mittels Kommandozeilentools und stellt die g\u00e4ngigsten Optionen vor, darunter <strong>Google Java Format<\/strong>, <strong>Spotless<\/strong>, <strong>Prettier<\/strong>, <strong>Checkstyle<\/strong> und <strong>OpenRewrite<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Warum Code-Formatierung wichtig ist<\/strong><\/h3>\n\n\n\n<p>Die automatische Code-Formatierung bietet viele Vorteile:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Einheitlichkeit:<\/strong> Sie stellt sicher, dass der gesamte Code einheitlich aussieht, unabh\u00e4ngig davon, wer ihn geschrieben hat.<\/li>\n\n\n\n<li><strong>Zeitersparnis:<\/strong> Manuelle Formatierungen oder Code-Reviews, die sich auf Stilfragen konzentrieren, entfallen.<\/li>\n\n\n\n<li><strong>Verbesserte Lesbarkeit:<\/strong> Gut formatierter Code ist einfacher zu verstehen und zu warten.<\/li>\n\n\n\n<li><strong>Integration in CI\/CD-Pipelines:<\/strong> Formatierungswerkzeuge k\u00f6nnen in den Entwicklungsworkflow integriert werden, um sicherzustellen, dass nur korrekt formatierter Code in das Repository gelangt.<\/li>\n<\/ol>\n\n\n\n<p>Die Verwendung von Kommandozeilentools ist besonders n\u00fctzlich, da sie unabh\u00e4ngig von der IDE funktionieren und sich leicht in automatisierte Prozesse integrieren lassen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Google Java Format<\/strong><\/h3>\n\n\n\n<p><strong>Google Java Format<\/strong> ist eines der bekanntesten Tools zur Code-Formatierung in der Java-Welt. Es wurde von Google entwickelt, um den internen Java-Stilstandard durchzusetzen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Funktionen<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Strikter und unver\u00e4nderbarer Formatierungsstil, basierend auf Googles Java-Stilrichtlinien.<\/li>\n\n\n\n<li>Unterst\u00fctzt Java-Versionen bis einschlie\u00dflich der neuesten Releases.<\/li>\n\n\n\n<li>Integration mit g\u00e4ngigen Build-Tools wie Maven und Gradle.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Installation<\/strong><\/h4>\n\n\n\n<p>Das Tool kann direkt \u00fcber die Kommandozeile oder als JAR-Datei verwendet werden.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Herunterladen der JAR-Datei<\/span>\ncurl -LJO https:<span class=\"hljs-comment\">\/\/github.com\/google\/google-java-format\/releases\/download\/v1.17.0\/google-java-format-1.17.0-all-deps.jar<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Verwendung<\/strong><\/h4>\n\n\n\n<p>Nach der Installation kann das Tool wie folgt aufgerufen werden:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">java -jar google-java-format-1.17.0-all-deps.jar --replace Pfad\/zu\/der\/Datei.java\n<\/code><\/span><\/pre>\n\n\n<p>Der Parameter <code>--replace<\/code> sorgt daf\u00fcr, dass die Datei direkt \u00fcberschrieben wird.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Vor- und Nachteile<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Vorteile<\/th><th>Nachteile<\/th><\/tr><\/thead><tbody><tr><td>Sehr einfach zu verwenden<\/td><td>Keine Anpassungen m\u00f6glich<\/td><\/tr><tr><td>Konsistenz mit Google-Richtlinien<\/td><td>Strenger, manchmal zu restriktiver Stil<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Spotless<\/strong><\/h3>\n\n\n\n<p><strong>Spotless<\/strong> ist ein m\u00e4chtiges Tool, das f\u00fcr verschiedene Sprachen, einschlie\u00dflich Java, verwendet werden kann. Es bietet mehr Flexibilit\u00e4t als Google Java Format und unterst\u00fctzt eine Vielzahl von Konfigurationen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Funktionen<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Unterst\u00fctzt Google Java Format, Eclipse Formatter und andere.<\/li>\n\n\n\n<li>Kann f\u00fcr spezifische Projekteinstellungen konfiguriert werden.<\/li>\n\n\n\n<li>Integration in Gradle und Maven.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Installation<\/strong><\/h4>\n\n\n\n<p>Spotless kann als Plugin f\u00fcr Maven oder Gradle hinzugef\u00fcgt werden, ist aber auch als eigenst\u00e4ndiges CLI-Tool verf\u00fcgbar.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Gradle-Konfiguration<\/span>\nplugins {\n    id <span class=\"hljs-string\">'com.diffplug.spotless'<\/span> version <span class=\"hljs-string\">'6.23.0'<\/span>\n}\n\nspotless {\n    java {\n        googleJavaFormat() <span class=\"hljs-comment\">\/\/ Verwendung von Google Java Format<\/span>\n    }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Verwendung<\/strong><\/h4>\n\n\n\n<p>Einmal konfiguriert, kann Spotless mit einem einzigen Befehl den Code formatieren:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">.\/gradlew spotlessApply\n<\/code><\/span><\/pre>\n\n\n<p>F\u00fcr die Kommandozeile kann auch <code>spotless-cli<\/code> verwendet werden:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">spotless apply --target Pfad\/zu\/der\/Datei.java\n<\/code><\/span><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Vor- und Nachteile<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Vorteile<\/th><th>Nachteile<\/th><\/tr><\/thead><tbody><tr><td>Flexibel und anpassbar<\/td><td>Komplexere Konfiguration<\/td><\/tr><tr><td>Unterst\u00fctzt verschiedene Formatter<\/td><td>Abh\u00e4ngigkeit von Java-Plugins<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Prettier<\/strong><\/h3>\n\n\n\n<p><strong>Prettier<\/strong> ist ein beliebtes Tool zur Code-Formatierung, das urspr\u00fcnglich f\u00fcr JavaScript entwickelt wurde, mittlerweile aber auch Java unterst\u00fctzt.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Funktionen<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Unterst\u00fctzt mehrere Programmiersprachen.<\/li>\n\n\n\n<li>Strikte Einhaltung eines spezifischen Formatierungsstils.<\/li>\n\n\n\n<li>Integrierbar in verschiedene Entwicklungs-Workflows.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Installation<\/strong><\/h4>\n\n\n\n<p>Prettier kann \u00fcber npm installiert werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">npm install --<span class=\"hljs-keyword\">global<\/span> prettier\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Verwendung<\/strong><\/h4>\n\n\n\n<p>Prettier kann auf der Kommandozeile mit Java-Dateien verwendet werden:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">prettier --write Pfad\/zu\/der\/Datei.java\n<\/code><\/span><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Vor- und Nachteile<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Vorteile<\/th><th>Nachteile<\/th><\/tr><\/thead><tbody><tr><td>Einfach zu verwenden<\/td><td>Weniger anpassbar f\u00fcr Java<\/td><\/tr><tr><td>Unterst\u00fctzt Multi-Language-Projekte<\/td><td>Nicht speziell f\u00fcr Java entwickelt<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Checkstyle<\/strong><\/h3>\n\n\n\n<p><strong>Checkstyle<\/strong> ist in erster Linie ein Tool zur Code-Analyse, das aber auch Formatierungsrichtlinien durchsetzen kann. Es ist besonders in Enterprise-Projekten beliebt.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Funktionen<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Umfangreiche Konfigurationsm\u00f6glichkeiten.<\/li>\n\n\n\n<li>Integration in CI\/CD-Pipelines.<\/li>\n\n\n\n<li>Analyse und Berichterstellung \u00fcber Verst\u00f6\u00dfe gegen den Code-Stil.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Installation<\/strong><\/h4>\n\n\n\n<p>Checkstyle wird h\u00e4ufig \u00fcber Maven oder Gradle integriert, kann aber auch als eigenst\u00e4ndiges CLI-Tool verwendet werden.<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">java -jar checkstyle-X.X-all.jar -c \/google_checks.xml Pfad\/zu\/der\/Datei.java\n<\/code><\/span><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Verwendung<\/strong><\/h4>\n\n\n\n<p>Um nur die Formatierung zu pr\u00fcfen, kann Checkstyle wie folgt ausgef\u00fchrt werden:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">java -jar checkstyle-X.X-all.jar -c \/sun_checks.xml Pfad\/zu\/der\/Datei.java\n<\/code><\/span><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Vor- und Nachteile<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Vorteile<\/th><th>Nachteile<\/th><\/tr><\/thead><tbody><tr><td>Anpassbare Regeln<\/td><td>Keine automatische Formatierung<\/td><\/tr><tr><td>Gut f\u00fcr Analyse und Berichte<\/td><td>Steilere Lernkurve<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. OpenRewrite<\/strong><\/h3>\n\n\n\n<p><strong>OpenRewrite<\/strong> ist ein relativ neues Tool, das nicht nur Code-Formatierung, sondern auch Refactoring unterst\u00fctzt.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Funktionen<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Statische Analyse und automatische Formatierung.<\/li>\n\n\n\n<li>Fokus auf gr\u00f6\u00dfere Code-Refactorings und Optimierungen.<\/li>\n\n\n\n<li>Unterst\u00fctzt Java und andere JVM-basierte Sprachen.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Installation<\/strong><\/h4>\n\n\n\n<p>OpenRewrite wird haupts\u00e4chlich \u00fcber Maven oder Gradle integriert.<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">.\/gradlew rewriteRun\n<\/code><\/span><\/pre>\n\n\n<h4 class=\"wp-block-heading\"><strong>Vor- und Nachteile<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Vorteile<\/th><th>Nachteile<\/th><\/tr><\/thead><tbody><tr><td>Unterst\u00fctzung f\u00fcr Refactoring<\/td><td>Noch in der Entwicklung<\/td><\/tr><tr><td>Anpassbare Regeln<\/td><td>Komplexer Aufbau<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fazit<\/strong><\/h3>\n\n\n\n<p>Jedes der vorgestellten Tools hat seine Vor- und Nachteile. <strong>Google Java Format<\/strong> und <strong>Spotless<\/strong> sind ideal, wenn es um einfache, schnelle Formatierung geht. <strong>Checkstyle<\/strong> eignet sich besonders, wenn zus\u00e4tzlich zum Format eine Analyse der Code-Qualit\u00e4t notwendig ist. <strong>Prettier<\/strong> bietet sich an, wenn Multi-Language-Unterst\u00fctzung gew\u00fcnscht ist, w\u00e4hrend <strong>OpenRewrite<\/strong> leistungsstarke Refactoring-M\u00f6glichkeiten bietet.<\/p>\n\n\n\n<p>F\u00fcr die Integration in automatisierte Workflows oder CI\/CD-Pipelines sind alle Tools geeignet. Die Wahl h\u00e4ngt von den spezifischen Anforderungen und dem gew\u00fcnschten Grad an Anpassbarkeit ab. Ein konsistenter Code-Stil ist jedoch in jedem Fall ein Gewinn f\u00fcr die Produktivit\u00e4t und Zusammenarbeit im Team.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Qualit\u00e4t 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\u00fcck, die Code automatisch formatieren k\u00f6nnen. Besonders in Java gibt es zahlreiche L\u00f6sungen, die sowohl in integrierten Entwicklungsumgebungen (IDEs) als auch auf der Kommandozeile eingesetzt werden k\u00f6nnen. Dieser Artikel fokussiert sich [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-507","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=507"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/507\/revisions"}],"predecessor-version":[{"id":508,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/507\/revisions\/508"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}