mirror of
https://github.com/sebastiandine/Card-Collection-Manager-3.git
synced 2026-08-28 17:01:02 +00:00
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:
@@ -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`
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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`.
|
||||||
|
|||||||
Reference in New Issue
Block a user