Files
asv-format-validator/docs/arbeitspakete/m1/AP02-build-infrastruktur.md

73 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AP02 Build-Infrastruktur härten
## Ziel
Die `pom.xml` so erweitern, dass alle für M1 und die späteren Quality-Gates in M9 benötigten Bausteine bereitstehen, ohne schon Funktionalität zu implementieren. Dazu gehören **SLF4J als Fassade** (verlangt von `technik-und-architektur.md`), **JaCoCo** und **PIT** für die differenzierten Qualitätsgates, sowie das **maven-jar-plugin** für ein ausführbares JAR.
## Voraussetzungen
- AP01 abgeschlossen
## Scope IN
- `pom.xml` ergänzen um:
- **SLF4J API** (`org.slf4j:slf4j-api`) als Compile-Dependency
- **log4j-slf4j2-impl** (`org.apache.logging.log4j:log4j-slf4j2-impl`) als Runtime-Bindung (SLF4J → Log4j2)
- **maven-jar-plugin** mit `Main-Class` = Bootstrap-Klasse (Name ist zu diesem Zeitpunkt noch offen, Platzhalter eintragen, in AP06 final setzen)
- **jacoco-maven-plugin** für Coverage, an `verify` gebunden, **ohne** harte Schwellwerte in M1 (die kommen erst in M9)
- **pitest-maven** als optionales Ziel (`mvn -P mutation test`), ebenfalls **ohne** harte Schwelle in M1
- **maven-surefire-plugin** bleibt wie bisher, ggf. Version aktualisieren falls nötig
- **Mockito als Java-Agent** in `maven-surefire-plugin` konfigurieren (via `argLine`), um die Warnung „Mockito self-attaching via ByteBuddy" aus AP01 zu beheben. Die dynamische Agent-Anbindung wird in künftigen JDK-Versionen nicht mehr erlaubt sein.
- `.editorconfig` im Repo-Root anlegen mit:
- UTF-8 als Default-Encoding für Quellcode
- LF als Zeilenende
- 4 Spaces Einrückung für Java
- `trim_trailing_whitespace = true`
- `insert_final_newline = true`
- `.gitattributes` anlegen:
- `* text=auto eol=lf`
- `*.bat text eol=crlf`
- `*.java text eol=lf`
- `*.md text eol=lf`
## Scope OUT
- Umstellung bestehender Klassen von Log4j2-API auf SLF4J (kommt in AP04)
- Einführung von Coverage-Schwellwerten (kommt erst in M9)
- Einführung von PIT-Schwellwerten (kommt erst in M9)
- Änderungen an Quellcode
- Änderungen an Tests
## Schritte
1. Branch `m1/ap02-build-infra` anlegen
2. SLF4J-Dependencies in `pom.xml` eintragen; **keine** Imports in Quellcode ändern
3. JaCoCo-Plugin eintragen, an `verify` binden
4. PIT-Plugin in Profil `mutation` eintragen
5. maven-jar-plugin eintragen mit Platzhalter `Main-Class` (Wert: `de.gecheckt.asv.bootstrap.Main` — wird in AP06 Realität)
6. `.editorconfig` und `.gitattributes` anlegen
7. `mvn clean verify` laufen lassen, muss grün sein
8. `mvn -P mutation test` laufen lassen, muss grün sein (PIT muss die bestehenden Tests durchkauen können, auch wenn noch kaum was da ist)
9. Commit `M1-AP02: Build-Infrastruktur härten (SLF4J, JaCoCo, PIT, JAR-Plugin)`
10. Abschlussbericht schreiben
## Abnahmekriterien
- `pom.xml` enthält: `slf4j-api`, `log4j-slf4j2-impl`, `maven-jar-plugin`, `jacoco-maven-plugin`, `pitest-maven`
- `mvn clean verify` ist grün
- `mvn -P mutation test` läuft ohne Fehler durch (Score ist **irrelevant** in M1)
- JaCoCo erzeugt einen Report unter `target/site/jacoco/`
- Mockito-Warnung „self-attaching via ByteBuddy" erscheint im Build-Log **nicht mehr**
- `.editorconfig` und `.gitattributes` liegen im Repo-Root
- keine Änderungen an `.java`-Dateien
- Abschlussbericht `berichte/AP02-bericht.md` liegt vor
## Rest-Risiken und offene Punkte
- Der `Main-Class`-Eintrag im JAR-Plugin zeigt bis AP06 auf eine Klasse, die noch nicht existiert. Das ist okay, solange das JAR-Plugin die Datei nicht beim Packen validiert. Alternativ bis AP06 auf die bestehende `AsvValidatorApplication` zeigen lassen und in AP06 umbiegen.
- PIT ohne Schwelle ist nur eine Trockenübung für M1. Die echten Schwellen werden in M9 aktiviert.
## Bericht
`docs/arbeitspakete/m1/berichte/AP02-bericht.md` nach `templates/ap-bericht.md`.