diff --git a/.github/workflows/static_checks.yml b/.github/workflows/static_checks.yml index 94e4f86..c3f2a0c 100644 --- a/.github/workflows/static_checks.yml +++ b/.github/workflows/static_checks.yml @@ -26,7 +26,7 @@ jobs: - name: clazy apt_pgks: - - clazy + - clazy cppcheck steps: - name: Install ninja-build tool @@ -49,3 +49,7 @@ jobs: - name: Build Project id: ctest run: cmake --build --preset=${{ matrix.config.name }} + + - name: Run cppcheck + if: ${{ matrix.config.name == 'clazy' }} + run: cmake --build --preset=${{ matrix.config.name }} --target cppcheck diff --git a/CMakeLists.txt b/CMakeLists.txt index bc880a4..58a9a4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,3 +109,16 @@ if(${PROJECT_NAME}_IS_ROOT_PROJECT) endif() feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) + +# TODO once cppcheck is passing change --error-exitcode=1 so CI step fails on new errors +add_custom_target( + cppcheck + COMMENT "Run cppcheck on sources" + USES_TERMINAL + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + COMMAND + ${CMAKE_COMMAND} -E env cppcheck --project=${PROJECT_BINARY_DIR}/compile_commands.json --enable=all + --error-exitcode=0 --language=c++ --inline-suppr --quiet --disable=missingInclude,unusedFunction + --check-level=exhaustive --library=qt.cfg -i3rdParty/ --suppress=*:*.moc --suppress=*:*moc_*.cpp -i/cmake/ECM/ + -i/cmake/KDAB/ +) diff --git a/CMakePresets.json b/CMakePresets.json index 0a7fcaa..9b45517 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -37,6 +37,7 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_CXX_COMPILER" : "clazy", + "CMAKE_EXPORT_COMPILE_COMMANDS" : "ON", "KDBindings_TESTS" : "ON", "KDBindings_EXAMPLES" : "ON", "KDBindings_ERROR_ON_WARNING" : "ON"