Dokumentation und Arbeitspakete angelegt

This commit is contained in:
2026-04-09 06:27:29 +02:00
parent fa36297e32
commit 79109594aa
13 changed files with 1069 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
# 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
- `.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/`
- `.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`.