From 3da70c081d3bad0f76e85320d251dfc499a0b88e Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Mon, 25 Dec 2023 21:17:22 +0100 Subject: [PATCH] Use clang-tidy through cmake (#341) --- .github/workflows/build_test.yml | 11 +++-------- .github/workflows/format.yml | 2 -- .github/workflows/tidy.yml | 14 +++----------- CMakeLists.txt | 11 ++++++++--- static_analysis/clang-tidy/CMakeLists.txt | 10 ++++++++++ 5 files changed, 24 insertions(+), 24 deletions(-) create mode 100644 static_analysis/clang-tidy/CMakeLists.txt diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index db7f206d..36b4912f 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -67,14 +67,9 @@ jobs: env: CC: ${{ matrix.config.cc }} CXX: ${{ matrix.config.cxx }} - run: | - mkdir -p build - cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - - name: make - run: | - cd build - cmake --build . --config Release # `config Release` somehow necessary by windows + run: cmake -B build -S . -DCMAKE_BUILD_TYPE=Release + - name: build + run: cmake --build build --config Release # `config Release` somehow necessary by windows - name: upload binaries uses: actions/upload-artifact@v2 diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 4ecc4e18..b5744167 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -11,8 +11,6 @@ jobs: runs-on: ubuntu-22.04 steps: - - run: sudo apt install clang-format-15 - - run: clang-format-15 --version - name: checkout diff --git a/.github/workflows/tidy.yml b/.github/workflows/tidy.yml index 631e37d0..b2c1aa66 100644 --- a/.github/workflows/tidy.yml +++ b/.github/workflows/tidy.yml @@ -15,10 +15,7 @@ jobs: runs-on: ubuntu-22.04 steps: - - name: ubuntu install clang-tidy - run: | - sudo apt install clang-tidy-12 - clang-tidy-12 --version + - run: clang-tidy --version - name: set up python 3.8 uses: actions/setup-python@v2 @@ -31,12 +28,7 @@ jobs: uses: actions/checkout@v2 - name: cmake - run: | - mkdir -p build - cd build - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. + run: cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DODR_CLANG_TIDY=ON - name: clang-tidy - run: | - FILES=$( find . -path ./build -prune -false -o -type f \( -iname \*.cpp \) ) - clang-tidy-12 -p build -header-filter '.*' $FILES + run: cmake --build build diff --git a/CMakeLists.txt b/CMakeLists.txt index ff018569..d173ea38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) option(ODR_TEST "enable tests" ON) +option(ODR_CLANG_TIDY "Run clang-tidy static analysis" OFF) # TODO defining global compiler flags seems to be bad practice with conan # TODO consider using conan profiles @@ -163,7 +164,7 @@ add_library(odr "src/odr/internal/zip/zip_util.cpp" "src/odr/internal/zip/zip_archive.cpp" - ) +) set_target_properties(odr PROPERTIES OUTPUT_NAME odr) if (EXISTS "${PROJECT_SOURCE_DIR}/.git") add_dependencies(odr check_git) @@ -171,7 +172,7 @@ endif () target_include_directories(odr PUBLIC src - ) +) target_link_libraries(odr PRIVATE pugixml::pugixml @@ -180,7 +181,7 @@ target_link_libraries(odr nlohmann_json::nlohmann_json vincentlaucsb-csv-parser::vincentlaucsb-csv-parser uchardet::uchardet - ) +) add_subdirectory("cli") @@ -188,6 +189,10 @@ if (ODR_TEST) add_subdirectory("test") endif () +if (ODR_CLANG_TIDY) + add_subdirectory("static_analysis/clang-tidy") +endif () + install( TARGETS odr diff --git a/static_analysis/clang-tidy/CMakeLists.txt b/static_analysis/clang-tidy/CMakeLists.txt new file mode 100644 index 00000000..fa90eaf1 --- /dev/null +++ b/static_analysis/clang-tidy/CMakeLists.txt @@ -0,0 +1,10 @@ +find_program(CLANG_TIDY_COMMAND NAMES clang-tidy) + +if (NOT CLANG_TIDY_COMMAND) + message(ERROR "ACTS_RUN_CLANG_TIDY is ON but clang-tidy is not found!") + set(CMAKE_CXX_CLANG_TIDY "" CACHE STRING "" FORCE) +endif () + +message(STATUS "Setting up clang-tidy run") + +set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND}")