This is an automated email from the ASF dual-hosted git repository. pnoltes pushed a commit to branch feature/566-introduce-clang-tidy-setup in repository https://gitbox.apache.org/repos/asf/celix.git
commit 93d2c0eded228c863510e09bb9939e20ea0912f2 Author: Pepijn Noltes <[email protected]> AuthorDate: Tue Feb 10 20:21:51 2026 +0100 gh-566: Add clang-tidy ci workflow --- .clang-tidy | 14 ++++--- .github/workflows/clang-tidy-scan.yml | 77 +++++++++++++++++++++++++++++++++++ .github/workflows/ubuntu.yml | 5 +-- 3 files changed, 87 insertions(+), 9 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index f7e376801..6530f77cf 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -134,11 +134,13 @@ Checks: > -cert-dcl51-cpp, -cert-dcl50-cpp, -cert-msc50-cpp, - -cert-msc51-cpp, - -cert-dcl59-cpp -WarningsAsErrors: '*' -HeaderFilterRegex: '.*' -#HeaderFilterRegex: '(bundles|libs|misc)/.*' + -cert-msc51-cpp +# TODO re-enable check suppression (disabled to trigger check results in the GitHub Sarif report) +# -cert-dcl59-cpp +WarningsAsErrors: "*" FormatStyle: file -SystemHeaders: false +#Note SystemHeaders not supported on ubuntu 22.04 ci (clang-tidy version 14.0), using header filter regex instead +#HeaderFilterRegex: ".*" +#SystemHeaders: false +HeaderFilterRegex: "(bundles|libs|misc).*" ... diff --git a/.github/workflows/clang-tidy-scan.yml b/.github/workflows/clang-tidy-scan.yml new file mode 100644 index 000000000..fd1f006d2 --- /dev/null +++ b/.github/workflows/clang-tidy-scan.yml @@ -0,0 +1,77 @@ +name: Celix clang-tidy Scan + +on: + push: + pull_request: + schedule: + - cron: '0 0 * * *' + +env: + CONAN_USER_HOME: "${{ github.workspace }}/release/" + CONAN_USER_HOME_SHORT: "${{ github.workspace }}/release/short" + CONAN_HOME: "${{ github.workspace }}/release/" + CC: gcc + CXX: g++ + +jobs: + + clang-tidy-scan: + runs-on: ubuntu-22.04 + timeout-minutes: 120 + steps: + - name: Checkout source code + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c #v3.3.0 + - name: Install build dependencies + run: | + sudo pip install -U conan + sudo apt-get install -yq --no-install-recommends ninja-build clang-tidy + - name: Setup Conan Profile + run: | + # build profile + conan profile detect -f --name release + sed -i 's/compiler.cppstd=gnu14/compiler.cppstd=gnu17/g' `conan profile path release` + echo "[tool_requires]" >> `conan profile path release` + echo "cmake/3.26.4" >> `conan profile path release` + + # host profile + conan profile detect -f + sed -i 's/build_type=Release/build_type=RelWithDebInfo/g' `conan profile path default` + sed -i 's/compiler.cppstd=gnu14/compiler.cppstd=gnu17/g' `conan profile path default` + echo "[tool_requires]" >> `conan profile path default` + echo "cmake/3.26.4" >> `conan profile path default` + - name: Conan Cache + id: cache-conan + uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf #v4.2.2 + env: + cache-name: cache-conan2-modules + with: + path: ${{ env.CONAN_HOME }} + key: ${{ runner.os }}-test-builder-${{ env.cache-name }}-gcc-RelWithDebInfo-clang-tidy-${{ hashFiles('conanfile.py') }} + restore-keys: ${{ runner.os }}-test-builder-${{ env.cache-name }}-gcc-RelWithDebInfo- + - name: Install Dependencies and configure CMake + env: + CONAN_BUILD_OPTIONS: | + -o celix/*:enable_testing=True + -o celix/*:enable_benchmarking=True + -o celix/*:build_all=True + run: | + conan install . -c tools.cmake.cmaketoolchain:generator=Ninja -pr:b release -pr:h default -of build ${CONAN_BUILD_OPTIONS} -b missing + #CMake configure -> generate build/compile_commands.json + cmake --preset conan-relwithdebinfo + - name: Setup Rust Tools (binary install) + uses: cargo-bins/cargo-binstall@ec80feb9e330418e014932e5982599255eff6dbb #v1.17.4 + - name: Install SARIF Tools + run: cargo binstall -y clang-tidy-sarif + - name: Run clang-tidy + run: | + set -o pipefail + run-clang-tidy -p build -quiet | tee clang-tidy-report.txt + - name: Convert clang-tidy output to sarif + if: always() + run: cat clang-tidy-report.txt | clang-tidy-sarif > clang-tidy-report.sarif + - name: upload sarif report + uses: github/codeql-action/upload-sarif@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 #4.32.2 + if: always() + with: + sarif_file: clang-tidy-report.sarif + category: clang-tidy diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 9ffa48867..6eb39059b 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -81,7 +81,6 @@ jobs: -o celix/*:enable_testing_on_ci=True -o celix/*:framework_curlinit=False -o celix/*:enable_ccache=True - -o celix/*:enable_clang_tidy=${{ (matrix.type == 'RelWithDebInfo' && matrix.compiler[0] == 'clang') && 'True' || 'False' }} run: | conan build . -c tools.cmake.cmaketoolchain:generator=Ninja -pr:b release -pr:h default -of build ${CONAN_BUILD_OPTIONS} -b missing - name: Test @@ -147,13 +146,13 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.type }} -DENABLE_CCACHE=ON -DCMAKE_POLICY_VERSION_MINIMUM=3.5 - -DENABLE_GCC_ANALYZER=OFF + -DENABLE_GCC_ANALYZER=${{matrix.type == 'RelWithDebInfo' && 'ON' || 'OFF'}} -G Ninja run: | mkdir build install cd build cmake ${BUILD_OPTIONS} -DCMAKE_INSTALL_PREFIX=../install .. - ninja -j8 + ninja -j8 ninja install - name: Test run: |
