Linting-as-Architecture
Linting-as-Architecture bezeichnet einen modernen Ansatz in der Softwareentwicklung, bei dem architektonische Regeln und Strukturvorgaben (z. B. "Domain A darf nicht auf Domain B zugreifen") nicht nur in Dokumenten festgehalten, sondern als automatisierte Regeln in einem Linter (z. B. ESLint, ArchUnit) formuliert werden. [1][2][3][4]
Diese Regeln werden so konfiguriert, dass sie sofort anschlagen ("feuern"), wenn ein Entwickler gegen sie verstößt. [5]
Hier sind die Kernaspekte im Detail:
1. Architekturregeln als Linter-Regeln[Bearbeiten]
Statt Architekturverletzungen erst im Review zu entdecken, werden sie in Regeln übersetzt, die der Code-Analyse-Tool (Linter) versteht. [7]
- Beispiele:
- Keine zirkulären Abhängigkeiten: Regel, die verhindert, dass Modul A Modul B importiert, wenn B bereits A importiert.
- Schichtenarchitektur-Erzwingung: Regel, die verbietet, dass die Präsentationsschicht (UI) direkt auf die Datenbank zugreift.
- Verbotene Imports: Regel, die den Import veralteter Bibliotheken oder bestimmter Verzeichnisse blockiert. [8][9][10][11]
2. "Sofortiges Feuern" im Editor (IDE)[Bearbeiten]
- Feedback-Loop: Sobald ein Entwickler einen Code schreibt, der die Regel verletzt, wird die Zeile im Editor (z. B. VS Code) sofort rot unterstrichen.
- Vorteil: Der Entwickler korrigiert den Fehler, bevor er den Code speichert oder commitet. [12][13][14][15][16]
3. "Sofortiges Feuern" in der CI (Continuous Integration)[Bearbeiten]
- Quality Gate: Die gleichen Regeln laufen in der CI/CD-Pipeline (z. B. bei jedem Git-Push oder Merge Request).
- Vorteil: Sollte der Entwickler die Warnung im Editor übersehen haben, verhindert der Linter, dass der fehlerhafte Code überhaupt in den Hauptzweig (Main/Master) gemergt wird. [17]
Vorteile dieses Ansatzes[Bearbeiten]
- Frühe Fehlererkennung: Architekturfehler werden Sekunden nach dem Schreiben erkannt, nicht erst Tage später.
- Automatisierung: Die Einhaltung der Architektur muss nicht mehr manuell in Code Reviews überwacht werden.
- Lerneffekt: Entwickler lernen durch die direkten Linter-Meldungen sofort, welche Strukturregeln gelten.
- Konsistenz: Ein hoher technischer Standard wird über das gesamte Team hinweg erzwungen. [18][19][20][21]
Kurz gesagt: Linting-as-Architecture macht Architekturregeln durch Code-Analyse-Tools erzwingbar und im Entwicklungsprozess absolut transparent. [22][23]
Einzelnachweise[Bearbeiten]
- ↑ dev.to: I built a linter that enforces clean architecture rules in TypeScript
- ↑ dev.to: Enforce architectural policies in JavaScript with ESLint
- ↑ Medium / Nexocode: ArchUnit – Forget architecture, it's a flexible and intelligent linter
- ↑ Joshua K. Goldberg: If I wrote a linter – Part 1: Architecture
- ↑ bernardteske.de: Linter – Kleine Helfer, große Wirkung
- ↑ Medium / fokusman: How linting and ESLint improve code quality
- ↑ MLOps Coding Course: Linting
- ↑ roman.pt: Python architecture linter
- ↑ Medium / aslihanKaren: Die typischen Schichten der Schichtenarchitektur (Layered Architecture)
- ↑ dev.to: I built a linter that enforces clean architecture rules in TypeScript
- ↑ dev.to: Enforce architectural policies in JavaScript with ESLint
- ↑ LinkedIn: Why should you use a linter in your code
- ↑ Xcitium: What is linting
- ↑ bernardteske.de: Linter – Kleine Helfer, große Wirkung
- ↑ dev.to: Enforce architectural policies in JavaScript with ESLint
- ↑ YouTube Shorts: Linting
- ↑ Medium / Ramchandra Vadranam: Using linting in CI/CD pipelines to boost code quality and detect errors early
- ↑ SonarSource: Linter
- ↑ ausbildung-in-der-it.de: Linter
- ↑ YouTube Shorts: Linting
- ↑ bernardteske.de: Linter – Kleine Helfer, große Wirkung
- ↑ MLOps Coding Course: Linting
- ↑ Medium / fokusman: How linting and ESLint improve code quality