From a3919ad103087b53a0e6610f40a38ba714ded822 Mon Sep 17 00:00:00 2001 From: tbeu Date: Sun, 25 Feb 2024 09:53:11 +0100 Subject: [PATCH] Enable Cppcheck --- .github/workflows/cmake.yml | 4 ++-- CMakeLists.txt | 1 + cmake/options.cmake | 2 ++ cmake/staticAnalyzers.cmake | 18 ++++++++++++++++++ cmake/thirdParties.cmake | 8 ++++++-- 5 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 cmake/staticAnalyzers.cmake diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index a3ec48cf..7992711c 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -61,9 +61,9 @@ jobs: if [ "${{ matrix.compiler }}" == "msvc" ]; then cmake -S . -B build -DMATIO_USE_CONAN=ON -DMATIO_SHARED=OFF elif [ "${{ matrix.compiler }}" == "mingw" ]; then - cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ matrix.configuration }} -DMATIO_USE_CONAN=ON -DMATIO_SHARED=OFF -G "MinGW Makefiles" + cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ matrix.configuration }} -DMATIO_USE_CONAN=ON -DMATIO_SHARED=OFF -DMATIO_ENABLE_CPPCHECK=ON -G "MinGW Makefiles" else - cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ matrix.configuration }} -DMATIO_USE_CONAN=ON -DMATIO_SHARED=OFF + cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ matrix.configuration }} -DMATIO_USE_CONAN=ON -DMATIO_SHARED=OFF -DMATIO_ENABLE_CPPCHECK=ON fi - name: Build with ${{ matrix.compiler }} run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 745f549e..a99f4047 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,7 @@ include(GNUInstallDirs) include(cmake/options.cmake) include(cmake/conan.cmake) include(cmake/thirdParties.cmake) +include(cmake/staticAnalyzers.cmake) include(cmake/compilerOptions.cmake) include(cmake/getopt.cmake) include(cmake/src.cmake) diff --git a/cmake/options.cmake b/cmake/options.cmake index f2e36459..4531d8e8 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -36,3 +36,5 @@ elseif(MATIO_DEFAULT_FILE_VERSION STREQUAL "7.3") else() message(ERROR "Unrecognized MAT file version") endif() + +option(MATIO_ENABLE_CPPCHECK "Enable static analysis with Cppcheck." OFF) diff --git a/cmake/staticAnalyzers.cmake b/cmake/staticAnalyzers.cmake new file mode 100644 index 00000000..44a35fef --- /dev/null +++ b/cmake/staticAnalyzers.cmake @@ -0,0 +1,18 @@ +if(MATIO_ENABLE_CPPCHECK) + find_program(CPPCHECK cppcheck) + if(CPPCHECK) + set(CMAKE_C_CPPCHECK ${CPPCHECK} + --language=c + --suppress=unusedFunction + --suppress=unmatchedSuppression + --suppress=missingIncludeSystem + --enable=all + --inline-suppr + --inconclusive + -i ${CMAKE_SOURCE_DIR}/imgui/lib + ) + message(VERBOSE "Cppcheck finished setting up.") + else() + message(SEND_ERROR "Cppcheck requested but executable not found.") + endif() +endif() diff --git a/cmake/thirdParties.cmake b/cmake/thirdParties.cmake index 86989f09..4d0b4846 100644 --- a/cmake/thirdParties.cmake +++ b/cmake/thirdParties.cmake @@ -12,16 +12,20 @@ if(MATIO_WITH_HDF5) endif() if(MATIO_USE_CONAN) + set(MATIO_CONAN_REQUIRES "hdf5/[>=1.8 <1.15]" "zlib/[>=1.2.3]") + if(MATIO_ENABLE_CPPCHECK) + list(APPEND MATIO_CONAN_REQUIRES "cppcheck/[>=2.13.3]") + endif() if(HDF5_USE_STATIC_LIBRARIES) conan_cmake_run( - REQUIRES "hdf5/[>=1.8 <1.15]" "zlib/[>=1.2.3]" + REQUIRES ${MATIO_CONAN_REQUIRES} BASIC_SETUP CMAKE_TARGETS OPTIONS hdf5:shared=False zlib:shared=False BUILD missing ) else() conan_cmake_run( - REQUIRES "hdf5/[>=1.8 <1.15]" "zlib/[>=1.2.3]" + REQUIRES ${MATIO_CONAN_REQUIRES} BASIC_SETUP CMAKE_TARGETS OPTIONS hdf5:shared=True zlib:shared=True BUILD missing)