From 32ac6246769776a243d85fdf240e9295c73382fb Mon Sep 17 00:00:00 2001 From: Daniil Dudkin Date: Fri, 22 Aug 2025 13:12:05 +0300 Subject: [PATCH 1/4] Refine clang-tidy and suppress external warnings --- .clang-tidy | 12 ++++++++++++ .github/workflows/clang-tidy.yml | 21 +++++++++++++++++++++ test/CMakeLists.txt | 3 ++- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .clang-tidy create mode 100644 .github/workflows/clang-tidy.yml diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..593c8ac --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,12 @@ +--- +Checks: > + -*, + clang-analyzer-*, + clang-diagnostic-*, + bugprone-*, + performance-* +WarningsAsErrors: '*' +# Only analyze headers from this repository; ignore external headers +HeaderFilterRegex: '^(include/|test/(?!third_party/))' +FormatStyle: file +... diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml new file mode 100644 index 0000000..3d77e06 --- /dev/null +++ b/.github/workflows/clang-tidy.yml @@ -0,0 +1,21 @@ +name: clang-tidy + +on: + pull_request: + paths-ignore: + - 'documentation/**' + - '.github/workflows/documentation.yml' + push: + paths-ignore: + - 'documentation/**' + - '.github/workflows/documentation.yml' + +jobs: + clang-tidy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Configure + run: cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + - name: clang-tidy + run: "clang-tidy --format-style=file --warnings-as-errors=* -p build $(git ls-files 'include/**/*.hpp')" diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 9fcf9aa..821fd3c 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -20,7 +20,8 @@ endif() function(make_test src target std) add_executable(${target} ${src}) target_compile_options(${target} PRIVATE ${OPTIONS}) - target_include_directories(${target} PRIVATE third_party/catch2) + target_include_directories(${target} SYSTEM PRIVATE third_party/catch2) + target_compile_definitions(${target} PRIVATE CATCH_CONFIG_NO_POSIX_SIGNALS) target_link_libraries(${target} PRIVATE ${CMAKE_PROJECT_NAME}) set_target_properties(${target} PROPERTIES CXX_EXTENSIONS OFF) if(std) From 64a4b8be112877e8f99b1ebf4fa6cef80916d6b8 Mon Sep 17 00:00:00 2001 From: Daniil Dudkin Date: Fri, 22 Aug 2025 16:15:06 +0300 Subject: [PATCH 2/4] Use clang-tidy-review GitHub Action --- .github/workflows/clang-tidy-review.yml | 25 +++++++++++++++++++++++++ .github/workflows/clang-tidy.yml | 21 --------------------- 2 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/clang-tidy-review.yml delete mode 100644 .github/workflows/clang-tidy.yml diff --git a/.github/workflows/clang-tidy-review.yml b/.github/workflows/clang-tidy-review.yml new file mode 100644 index 0000000..bb2266b --- /dev/null +++ b/.github/workflows/clang-tidy-review.yml @@ -0,0 +1,25 @@ +name: clang-tidy-review + +on: [pull_request] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + # Optionally generate compile_commands.json + - uses: ZedThree/clang-tidy-review@v0.14.0 + id: review + with: + cmake_command: cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + build_dir: build + + # Uploads an artefact containing clang_fixes.json + - uses: ZedThree/clang-tidy-review/upload@v0.14.0 + id: upload-review + + # If there are any comments, fail the check + - if: steps.review.outputs.total_comments > 0 + run: exit 1 diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml deleted file mode 100644 index 3d77e06..0000000 --- a/.github/workflows/clang-tidy.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: clang-tidy - -on: - pull_request: - paths-ignore: - - 'documentation/**' - - '.github/workflows/documentation.yml' - push: - paths-ignore: - - 'documentation/**' - - '.github/workflows/documentation.yml' - -jobs: - clang-tidy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Configure - run: cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - - name: clang-tidy - run: "clang-tidy --format-style=file --warnings-as-errors=* -p build $(git ls-files 'include/**/*.hpp')" From 11f420024d862495585ceba2f7bbf2a6ee81c254 Mon Sep 17 00:00:00 2001 From: Daniil Dudkin Date: Fri, 22 Aug 2025 16:16:13 +0300 Subject: [PATCH 3/4] Update test/CMakeLists.txt --- test/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 821fd3c..1a92781 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -20,8 +20,6 @@ endif() function(make_test src target std) add_executable(${target} ${src}) target_compile_options(${target} PRIVATE ${OPTIONS}) - target_include_directories(${target} SYSTEM PRIVATE third_party/catch2) - target_compile_definitions(${target} PRIVATE CATCH_CONFIG_NO_POSIX_SIGNALS) target_link_libraries(${target} PRIVATE ${CMAKE_PROJECT_NAME}) set_target_properties(${target} PROPERTIES CXX_EXTENSIONS OFF) if(std) From 948d39f25bb61728c4310c34be75befa0087ae3c Mon Sep 17 00:00:00 2001 From: Daniil Dudkin Date: Fri, 22 Aug 2025 16:20:06 +0300 Subject: [PATCH 4/4] Update .github/workflows/clang-tidy-review.yml --- .github/workflows/clang-tidy-review.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/clang-tidy-review.yml b/.github/workflows/clang-tidy-review.yml index bb2266b..54063cd 100644 --- a/.github/workflows/clang-tidy-review.yml +++ b/.github/workflows/clang-tidy-review.yml @@ -10,14 +10,14 @@ jobs: - uses: actions/checkout@v4 # Optionally generate compile_commands.json - - uses: ZedThree/clang-tidy-review@v0.14.0 + - uses: ZedThree/clang-tidy-review@v0.21.0 id: review with: cmake_command: cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON build_dir: build # Uploads an artefact containing clang_fixes.json - - uses: ZedThree/clang-tidy-review/upload@v0.14.0 + - uses: ZedThree/clang-tidy-review/upload@v0.21.0 id: upload-review # If there are any comments, fail the check