diff --git a/prompts/strict-warning-cleanup-lts-dds-docker-agent.prompt.md b/prompts/strict-warning-cleanup-lts-dds-docker-agent.prompt.md new file mode 100644 index 000000000..9047016bd --- /dev/null +++ b/prompts/strict-warning-cleanup-lts-dds-docker-agent.prompt.md @@ -0,0 +1,205 @@ +# GitHub Copilot Instructions: Strict Warning Cleanup for `Lts/DDS` with Docker Validation + +Bereinige **ausschließlich** warnings und den konkreten CMake/Include-Path-Fehler im Qt6-Migrationsbaum, mit **streng minimalen, seiteneffektarmen Änderungen**, und validiere anschließend im Docker-Kontext. + +## Scope +Primärer Scope: + +- `/repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/DDS` + +Nur falls zwingend direkt notwendig zur Behebung der konkret gemeldeten Probleme, dürfen zusätzlich diese Stellen geändert werden: + +- `/repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Common/CodeGen/XmlReader.cpp` +- `/repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_base.h` +- `/repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Z/src/NGLLogger/...` +- direkt ursächliche `CMakeLists.txt`-Dateien +- direkt ursächliche cmake-Helper/Includes, **nur wenn** der fehlerhafte Include-Pfad sonst nicht an der Wurzel korrigierbar ist + +## Aktueller Stand +- Der aktuelle `Lts/DDS`-Build ist bereits erfolgreich. +- Ziel ist **nicht** die funktionale Migration. +- Ziel ist die **strikte Bereinigung** von: + 1. dem CMake-/Include-Path-Fehler + 2. deprecated warnings + 3. reorder warnings + 4. unused warnings + +## Harte Regeln +- **Keine funktionalen Änderungen** +- **Keine Refactorings** +- **Keine API-Änderungen** +- **Keine Verhaltensänderungen** +- **Keine Änderungen am Legacy-Tree** +- **Keine opportunistischen Fixes** +- **Keine globalen Suppressions wie `-Wno-*`, wenn lokale Ursachenbehebung möglich ist** +- **Keine Entfernung potenziell künftig genutzter Parameter aus Funktionssignaturen** +- **Keine breitflächigen Warning-Cleanup-Aktionen außerhalb der konkret gemeldeten Stellen** +- **Keine Änderungen, die nur kosmetisch sind und nicht direkt mit den gemeldeten Warnings zusammenhängen** + +## Konkrete Eingaben / bekannte Probleme +Folgende Punkte sind gezielt zu bereinigen: + +- deprecated: + - `QDomDocument::setContent(QIODevice*, QString*, int*, int*)` + - `QMultiMap::insertMulti(...)` +- reorder: + - `Lts/DDS/DDSConnector/dds_connector.cpp` + - `Lts/DDS/DDSConnector/dds_connector.h` +- unused: + - `include/DDS/Generic/generic_base.h` + - ggf. lokal ungenutzte Funktion in `Z/src/NGLLogger/NGLLogger.cpp` +- CMake/configure/include-path problem: + - `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/build4/Z/src/NGLLogger/Z/src/NGLLogger` + +## Priorität 1: CMake-/Include-Path-Root-Cause beheben +Behandle dies als **echten Projektfehler** in der Build-Konfiguration. + +### Pflicht +- finde die **Ursache** des fehlerhaften Include-Verzeichnisses +- korrigiere die Ursache in CMake oder target-bezogener Include-Konfiguration +- bevorzuge saubere, deterministische Pfade +- prüfe insbesondere: + - `include_directories(...)` + - `target_include_directories(...)` + - zusammengesetzte relative Pfade + - versehentliche Verdopplung von Teilpfaden wie `Z/src/NGLLogger` + - source-vs-binary-path-Missbrauch + +### Verboten +- keine Unterdrückung über Compiler-Flags +- kein Belassen eines kaputten Include-Pfads, wenn er nur zufällig harmlos ist +- keine Workarounds über zusätzliche Dummy-Verzeichnisse +- keine symptomatische Änderung ohne Root-Cause-Verständnis + +### Erwartung +Wenn der Fehler aus einem Modul außerhalb `Lts/DDS` kommt, ist **nur der minimal notwendige Fix** dort erlaubt. + +## Priorität 2: Deprecated warnings risikominimal bereinigen + +### `QDomDocument::setContent(...)` +- auf die Qt6-empfohlene API mit `ParseResult` umstellen +- Fehlerbehandlung semantisch möglichst identisch halten +- keine größere Parser-Logik ändern +- keine Folgerefactorings + +### `QMultiMap::insertMulti(...)` +- lokal auf `insert(...)` umstellen, sofern semantisch gleichwertig für `QMultiMap` +- keine Container-Umstrukturierung +- keine Logikänderung + +## Priorität 3: Reorder warnings exakt bereinigen +Für `dds_connector.*` gilt: + +- bevorzuge **nur** die Anpassung der Initializer-Liste an die Deklarationsreihenfolge im Header +- ändere Member-Deklarationen **nicht**, außer es wäre der einzige saubere Weg +- keine neue Initialisierungslogik +- keine inhaltliche Änderung + +## Priorität 4: Unused warnings strikt seiteneffektarm bereinigen + +### Ungenutzte Parameter +Insbesondere in: + +- `/repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_base.h` + +Pflicht: +- Signaturen **nicht** ändern +- Parameter **nicht** entfernen +- `Q_UNUSED(parameter)` verwenden +- so platzieren, dass keinerlei Laufzeitverhalten geändert wird +- robust gegenüber späterer tatsächlicher Nutzung bleiben + +### Ungenutzte Funktion +Für: +- `Z/src/NGLLogger/NGLLogger.cpp: findConfigFile(...)` + +gilt: +- nur entfernen, wenn zweifelsfrei lokal ungenutzt und ohne Seiteneffekt +- andernfalls risikoärmste lokale Lösung wählen +- keine unnötigen Sichtbarkeits- oder API-Änderungen + +## Arbeitsweise +Arbeite autonom bis zum Ende: + +1. Ursachenanalyse der gemeldeten warnings und des Include-Pfad-Fehlers +2. minimal nötige Änderungen +3. Reconfigure +4. Rebuild +5. Warning-Review +6. Docker-Validierung +7. knapper Abschlussbericht + +## Docker ist Pflicht +Nutze **ausschließlich** dieses Dockerfile als autoritativ: + +- `/repo/app/Dockerfile` + +Repo im Container als: + +- `/repo` + +## Docker-Anforderungen +Im Container verfügbar machen: + +- Repository root auf `/repo` +- `/repo/external` +- `/repo/external/rti_connext_dds-7.7.0` +- `./rti_license.dat` read-only gemountet + +Falls RTI-/Lizenz-Umgebungsvariablen nötig sind: +- minimal +- explizit +- keine impliziten Host-Annahmen + +## Validierung +Mindestens validieren: + +### 1. regulärer Konfigurations-/Buildlauf +Bevorzugt mit sauberem Build-Verzeichnis, z. B.: + +```bash +cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus \ + -B /repo/build-warning-cleanup \ + -G Ninja \ + -DCMAKE_BUILD_TYPE=Debug +cmake --build /repo/build-warning-cleanup --parallel +ctest --test-dir /repo/build-warning-cleanup --output-on-failure +``` + +### 2. Docker-validierter Lauf +Baue und teste im Container mit demselben Repo-Mount-Prinzip. + +Wenn es Build-Optionen wie `BUILD_RTI=ON/OFF` gibt und sie für den Warning-Pfad relevant sind, prüfe mindestens die Variante, die den gemeldeten Warning-Kontext reproduziert. +Wenn ohne Mehrkosten möglich, prüfe zusätzlich beide Varianten. + +## Strikte Erfolgsdefinition +Nur als erfolgreich melden, wenn alle folgenden Punkte erfüllt sind: + +- fehlerhafter Include-/CMake-Pfad ist an der Ursache korrigiert +- gemeldete deprecated warnings sind lokal und risikominimal bereinigt, soweit im Scope möglich +- reorder warnings sind bereinigt +- unused parameter warnings sind seiteneffektarm via `Q_UNUSED(...)` oder gleichwertig bereinigt +- Build bleibt erfolgreich +- Docker-Validierung wurde ausgeführt +- keine funktionalen Änderungen eingeführt + +## Wenn ein Punkt nicht sauber lösbar ist +Dann: +- keine riskante Änderung erzwingen +- keine globale Warning-Unterdrückung einführen +- keine Scheinerfolge melden +- den Punkt als **bewusst offen** berichten, mit präziser Begründung + +## Abschlussbericht +Berichte nur das Wesentliche: + +- **bereinigt** oder **teilweise bereinigt** +- Root Cause des Include-/CMake-Pfad-Fehlers +- ob Docker-Validierung erfolgreich war +- exakte Docker-Kommandos +- exakte Build-Kommandos +- geänderte Dateien +- beseitigte Warnings +- bewusst nicht beseitigte Warnings mit Begründung +- Projektfehler vs. Umgebungsfehler +- Restrisiken diff --git a/qt-migration-legatus b/qt-migration-legatus index 67491249c..3aa0b04eb 160000 --- a/qt-migration-legatus +++ b/qt-migration-legatus @@ -1 +1 @@ -Subproject commit 67491249c2d65f040c02d7a4ce20532b6f95d545 +Subproject commit 3aa0b04ebd1acc5d200dbd4266cf56fd5c19e9ca