Das Problem

In einem Software Projekt mit mehreren Beteiligten kommen früher oder später unterschiedliche Coding-Stile zum Einsatz. Ob der uneinheitliche Zeilenumbruch, (versehentliche) Leerzeichen am Ende einer Zeile oder der fehlende Zeilenumbruch am Ende einer Datei: Hier muss man sich auf auf eine gemeinsamen Standard einigen.

Die Werkzeuge

Dabei kann das Projekt Editorconfig helfen. Man legt eine einfache Editorconfig-Datei in seinem Projekt ab und viele Editoren kümmern sich um den Rest.

Was passiert aber mit den bereits vorhandenen Dateien? Hier helfen ein paar einfache Kommandozeilenbefehle. Ich verwende dabei sd und fd, die für viele System verfügbar sind.

Beispiele

Allen Javascript Dateien die fehlende lezte Newline hinzufügen

fd --extension js -x sd '([^\n]\z)' '$1\n'

(Erklärung der Regular Expression: “Finde ein Nicht-Zeilenende vor dem Dateiende. Ersetze dies durch den gleichen Inhalt wie zuvor, aber füge ein Newline am Ende ein”)

Alle Javascript Dateien “trailing whitespaces” löschen:

fd --extension js -x sd ' +\n' '\n'

(Erklärung der Regular Expression: “Finde ein (oder mehrere) Leerzeichen vor einem Newline. Ersetze das gefundene durch eine Newline”)

Alle Javascript Dateien in “unix-style” Zeilenumbrüche setzen:

fd --extension js -x dos2unix

Weitere Schritte

Für die Zukunft könnten wir einen editor-config checker in unsere CI-Pipeline einbauen, der Änderungen auf unseren Standard gegenprüft.

Für jede Sprache sollte jetzt noch ein Linter zur Einhaltung des gleichen Formatierungsstandards eingesetzt werden.

Fazit

Mit den kleinen Reparaturen können wir unser Projekt auf einen einheitlichen Standard heben. Das Editorconfig-Projekt hilft uns diese in der Zukunft einzuhalten.