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

3.7 KiB
Raw Blame History

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.