206 lines
7.3 KiB
Markdown
206 lines
7.3 KiB
Markdown
# 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
|