fix: Feature/sonarqube3 (#6)

* patch: code coverage

* fix: ci fix

* fix: ci fix

---------

Co-authored-by: sdine <sdine@sdine.com>
This commit is contained in:
Sebastian Dine
2026-05-09 15:11:08 +02:00
committed by GitHub
parent a691291413
commit 7807192ecb
4 changed files with 4 additions and 0 deletions
+1
View File
@@ -37,6 +37,7 @@ GitHub Actions workflows for CI, release automation, and policy checks.
- Prefer minimal, surgical edits; avoid large workflow rewrites unless requested. - Prefer minimal, surgical edits; avoid large workflow rewrites unless requested.
- Reusable workflows should declare explicit `workflow_call` inputs for required context (e.g., version, merge SHA). - Reusable workflows should declare explicit `workflow_call` inputs for required context (e.g., version, merge SHA).
- Sonar coverage steps that use `gcovr` must exclude third-party build trees at discovery time with `--exclude-directories` (for example `build/_deps`) so gcov does not process dependency `.gcda` files.
- Keep `permissions` least-privilege: - Keep `permissions` least-privilege:
- reusable build workflows: `contents: read` - reusable build workflows: `contents: read`
- release/tag orchestrator: `contents: write` - release/tag orchestrator: `contents: write`
+1
View File
@@ -52,6 +52,7 @@ jobs:
gcovr -r . gcovr -r .
--sonarqube build/sonarqube-coverage.xml --sonarqube build/sonarqube-coverage.xml
--exclude "build/_deps/" --exclude "build/_deps/"
--exclude-directories "build/_deps"
- name: SonarQube Cloud scan - name: SonarQube Cloud scan
uses: SonarSource/sonarqube-scan-action@v5 uses: SonarSource/sonarqube-scan-action@v5
+1
View File
@@ -52,6 +52,7 @@ jobs:
gcovr -r . gcovr -r .
--sonarqube build/sonarqube-coverage.xml --sonarqube build/sonarqube-coverage.xml
--exclude "build/_deps/" --exclude "build/_deps/"
--exclude-directories "build/_deps"
- name: SonarQube Cloud scan - name: SonarQube Cloud scan
uses: SonarSource/sonarqube-scan-action@v5 uses: SonarSource/sonarqube-scan-action@v5
+1
View File
@@ -90,6 +90,7 @@ Run from the **workspace root**.
- After modifying a domain type's fields or JSON layout you **must** update the matching round-trip test in `tests/domain_json_tests.cpp` and re-run tests. - After modifying a domain type's fields or JSON layout you **must** update the matching round-trip test in `tests/domain_json_tests.cpp` and re-run tests.
- After adding a new `.cpp` to `core/` or `ui_wx/` you **must** add it to that package's `CMakeLists.txt`. There is no glob. - After adding a new `.cpp` to `core/` or `ui_wx/` you **must** add it to that package's `CMakeLists.txt`. There is no glob.
- After adding a new dependency you **must** verify its license is compatible with this repository's MIT license before merging. - After adding a new dependency you **must** verify its license is compatible with this repository's MIT license before merging.
- After changing SonarQube coverage generation, keep dependency build outputs excluded at gcov discovery time (for example `gcovr --exclude-directories "build/_deps"`); output-only excludes are not enough for third-party `.gcda` files.
- After adding a new game module you **must**: (1) extend `Game` enum + string mappings in `core/include/ccm/domain/Enums.hpp`, (2) register the module in `app/main.cpp`, (3) add a directory mapping in `app/main.cpp::dirNameForGame`, (4) implement an `IGameView` derived class (or `<Name>GameView`) and add it to `AppContext::gameViews` in the composition root. - After adding a new game module you **must**: (1) extend `Game` enum + string mappings in `core/include/ccm/domain/Enums.hpp`, (2) register the module in `app/main.cpp`, (3) add a directory mapping in `app/main.cpp::dirNameForGame`, (4) implement an `IGameView` derived class (or `<Name>GameView`) and add it to `AppContext::gameViews` in the composition root.
- After changing the per-game seams (`IGameModule`, `IGameView`, the `BaseCard*Panel` template hooks) you **must** update `docs/adding-a-new-game.md` so the canonical "add a new game" walkthrough stays in sync with the code. - After changing the per-game seams (`IGameModule`, `IGameView`, the `BaseCard*Panel` template hooks) you **must** update `docs/adding-a-new-game.md` so the canonical "add a new game" walkthrough stays in sync with the code.
- After changing `formatTextForFs` or `parseIndexFromFilename` you **must** update `tests/fs_names_tests.cpp` — these functions exist to stay byte-compatible with the original Rust `util/fs.rs`. - After changing `formatTextForFs` or `parseIndexFromFilename` you **must** update `tests/fs_names_tests.cpp` — these functions exist to stay byte-compatible with the original Rust `util/fs.rs`.