forked from cieslarmichal/faker-cxx
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add static analysis to CI (cieslarmichal#626)
* Add pre-commit config file Signed-off-by: Uilian Ries <[email protected]> * update revision Signed-off-by: Uilian Ries <[email protected]> * Revert "update revision" This reverts commit 29be8ad. * Configure cppcheck Signed-off-by: Uilian Ries <[email protected]> * Configure clang tidy Signed-off-by: Uilian Ries <[email protected]> * Drop oclint and uwyi Signed-off-by: Uilian Ries <[email protected]> * Do not specify code style for now Signed-off-by: Uilian Ries <[email protected]> * use pytoml Signed-off-by: Uilian Ries <[email protected]> * checkout Signed-off-by: Uilian Ries <[email protected]> * Cache pip Signed-off-by: Uilian Ries <[email protected]> * Single build Signed-off-by: Uilian Ries <[email protected]> * Revert "use pytoml" This reverts commit dd80e49. * restore cache Signed-off-by: Uilian Ries <[email protected]> * restore build folder Signed-off-by: Uilian Ries <[email protected]> * Consider gtest as from system Signed-off-by: Uilian Ries <[email protected]> * Cache build folder Signed-off-by: Uilian Ries <[email protected]> * Try to restore conan cache Signed-off-by: Uilian Ries <[email protected]> * Run coverate at same build step Signed-off-by: Uilian Ries <[email protected]> * Show report Signed-off-by: Uilian Ries <[email protected]> * clang tidy Signed-off-by: Uilian Ries <[email protected]> * Do not run test branch Signed-off-by: Uilian Ries <[email protected]> * Remove steps from pre-commit Signed-off-by: Uilian Ries <[email protected]> * Suppress import error Signed-off-by: Uilian Ries <[email protected]> * Ignore clang tidy errors Signed-off-by: Uilian Ries <[email protected]> * Ignore clang tidy errors Signed-off-by: Uilian Ries <[email protected]> --------- Signed-off-by: Uilian Ries <[email protected]>
- Loading branch information
1 parent
9468936
commit 3f0c444
Showing
7 changed files
with
215 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -78,14 +78,3 @@ jobs: | |
|
||
- name: Test | ||
run: ctest --preset=unixlike-clang-debug | ||
|
||
- name: Generate code coverage | ||
working-directory: ${{github.workspace}}/build/unixlike-clang-debug | ||
run: | | ||
ninja faker-ccov-all \ | ||
&& llvm-cov-18 show `cat ccov/binaries.list` -instr-profile=ccov/all-merged.profdata > coverage.txt | ||
- name: Codecov | ||
uses: codecov/[email protected] | ||
with: | ||
token: ${{ secrets.CODECOVTOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,200 @@ | ||
name: static-analysis | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'main' | ||
workflow_dispatch: | ||
pull_request: | ||
|
||
jobs: | ||
build_project: | ||
name: ci-ubuntu-24.04-build-clang | ||
runs-on: ubuntu-24.04 | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Configure python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.10' | ||
cache: 'pip' | ||
|
||
- name: Install Python dependencies | ||
run: pip install -r .github/requirements.txt | ||
|
||
- name: Install ccache | ||
uses: hendrikmuhs/[email protected] | ||
|
||
- name: Cache Conan packages | ||
id: cache-conan | ||
uses: actions/[email protected] | ||
env: | ||
cache-name: cache-conan-packages | ||
with: | ||
path: ~/.conan2 | ||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('conanfile.txt') }} | ||
restore-keys: | | ||
${{ runner.os }}-build-${{ env.cache-name }}- | ||
${{ runner.os }}-build- | ||
${{ runner.os }}- | ||
- name: Configure Conan profiles | ||
run: | | ||
CC=clang-18 \ | ||
CXX=clang++-18 \ | ||
conan profile detect --force --name clang-18 | ||
- name: Install Conan dependencies | ||
run: | | ||
conan install conanfile.txt \ | ||
-r conancenter \ | ||
-pr:b clang-18 \ | ||
-pr:h clang-18 \ | ||
-s compiler.cppstd=20 \ | ||
-s build_type=Debug \ | ||
-o "*:shared=True" \ | ||
-c:b tools.build:compiler_executables="{'c': '/usr/bin/clang-18', 'cpp': '/usr/bin/clang++-18'}" \ | ||
-c:h tools.build:compiler_executables="{'c': '/usr/bin/clang-18', 'cpp': '/usr/bin/clang++-18'}" \ | ||
--build=missing \ | ||
- name: Configure CMake | ||
run: | | ||
cmake -S ${{github.workspace}} --preset=unixlike-clang-debug \ | ||
-DCMAKE_C_COMPILER=/usr/bin/clang-18 \ | ||
-DCMAKE_CXX_COMPILER=/usr/bin/clang++-18 \ | ||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | ||
-DCODE_COVERAGE:BOOL=ON \ | ||
-DBUILD_TESTING:BOOL=ON \ | ||
-DUSE_SYSTEM_DEPENDENCIES:BOOL=ON \ | ||
-DUSE_STD_FORMAT:BOOL=ON \ | ||
-DCMAKE_TOOLCHAIN_FILE=build/Debug/generators/conan_toolchain.cmake \ | ||
-DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld | ||
- name: Build | ||
run: cmake --build --preset=unixlike-clang-debug | ||
|
||
- name: Generate code coverage | ||
working-directory: ${{github.workspace}}/build/unixlike-clang-debug | ||
run: | | ||
ninja faker-ccov-all \ | ||
&& llvm-cov-18 show `cat ccov/binaries.list` -instr-profile=ccov/all-merged.profdata > coverage.txt \ | ||
&& llvm-cov-18 report `cat ccov/binaries.list` -instr-profile=ccov/all-merged.profdata | ||
- name: Store build artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: build-directory | ||
path: ${{github.workspace}}/build | ||
|
||
cppcheck: | ||
name: cppcheck | ||
runs-on: ubuntu-24.04 | ||
needs: build_project | ||
outputs: | ||
build_output: ${{ steps.build_project.outputs }} | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Install and cache apt packages | ||
uses: awalsh128/cache-apt-pkgs-action@latest | ||
with: | ||
packages: cppcheck | ||
version: 1.0 | ||
|
||
- name: Download build directory | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build-directory | ||
path: build | ||
|
||
- name: Run cppcheck | ||
run: | | ||
cppcheck \ | ||
--template=gcc \ | ||
--suppress=missingIncludeSystem \ | ||
--suppress=variableScope \ | ||
--suppress=cppcheckError \ | ||
--suppress=internalAstError \ | ||
--suppress=unmatchedSuppression \ | ||
--suppress=passedByValue \ | ||
--suppress=syntaxError \ | ||
--suppress=preprocessorErrorDirective \ | ||
--inconclusive \ | ||
-I src \ | ||
-I src/common \ | ||
-I src/modules \ | ||
-I include \ | ||
--std=c++20 \ | ||
--enable=style \ | ||
--enable=performance \ | ||
--enable=warning \ | ||
--enable=portability \ | ||
--inline-suppr \ | ||
--cppcheck-build-dir=build/unixlike-clang-debug \ | ||
--project=build/unixlike-clang-debug/compile_commands.json | ||
clang_tidy: | ||
name: clang-tidy | ||
runs-on: ubuntu-24.04 | ||
needs: build_project | ||
outputs: | ||
build_output: ${{ steps.build_project.outputs }} | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Cache Conan packages | ||
id: cache-conan | ||
uses: actions/cache/[email protected] | ||
env: | ||
cache-name: cache-conan-packages | ||
with: | ||
path: ~/.conan2 | ||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('conanfile.txt') }} | ||
|
||
- name: Download build directory | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build-directory | ||
path: build | ||
|
||
- name: Run clang-tidy | ||
run: | | ||
run-clang-tidy \ | ||
-p build/unixlike-clang-debug \ | ||
-header-filter="include/*" \ | ||
-extra-arg="-std=gnu++20" || true | ||
clang_format: | ||
name: clang-format | ||
runs-on: ubuntu-24.04 | ||
needs: build_project | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Download build directory | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build-directory | ||
path: build | ||
|
||
- name: Configure python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: '3.10' | ||
cache: 'pip' | ||
|
||
- name: Install Python dependencies | ||
run: pip install pre-commit | ||
|
||
- name: Run clang-format | ||
# FIXME: Ignore format errors for now | ||
run: pre-commit run clang-format --all-files --color always --verbose || true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
fail_fast: false | ||
repos: | ||
- repo: https://github.com/pocc/pre-commit-hooks | ||
rev: master | ||
hooks: | ||
- id: clang-format | ||
- id: clang-tidy | ||
args: ["-header-filter=include/.*", "-extra-arg=-std=c++20"] | ||
- id: cppcheck | ||
args: ["--template=gcc", "--suppress=missingIncludeSystem", "--suppress=variableScope", "--suppress=cppcheckError", "--suppress=internalAstError", "--suppress=unmatchedSuppression", "--suppress=passedByValue", "--suppress=syntaxError", "--suppress=preprocessorErrorDirective", "--inconclusive", "-I src", "-I src/common", "-I src/modules", "-I include", "--std=c++20", "--enable=style", "--enable=performance", "--enable=warning", "--enable=portability", "--inline-suppr"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters