From 28a315195e19ad7204a6d141f71e83cf64985d35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Gil=20de=20G=C3=B3mez=20P=C3=A9rez?= Date: Wed, 12 Aug 2026 13:49:04 +0300 Subject: [PATCH] Update: Using C++26 with contracts enabled --- cmake/Cppcheck.cmake | 42 +++++++++++++++++++++++++++++++++++++++ cppcheck/suppressions.txt | 8 ++++++++ 2 files changed, 50 insertions(+) create mode 100644 cmake/Cppcheck.cmake create mode 100644 cppcheck/suppressions.txt diff --git a/cmake/Cppcheck.cmake b/cmake/Cppcheck.cmake new file mode 100644 index 0000000..8c9d9c8 --- /dev/null +++ b/cmake/Cppcheck.cmake @@ -0,0 +1,42 @@ +function(course_add_cppcheck_targets) + find_program(CPPCHECK_EXECUTABLE cppcheck) + if(NOT CPPCHECK_EXECUTABLE) + message(STATUS "cppcheck not found; cppcheck targets will not be available") + return() + endif() + + set(_compile_commands "${CMAKE_BINARY_DIR}/compile_commands.json") + set(_suppressions "${CMAKE_SOURCE_DIR}/cppcheck/suppressions.txt") + + add_custom_target( + cppcheck_modules + COMMAND + "${CPPCHECK_EXECUTABLE}" + --project=${_compile_commands} + --enable=warning,style,performance + --std=c++26 + --inline-suppr + --suppressions-list=${_suppressions} + -i${CMAKE_SOURCE_DIR}/support + -i${CMAKE_BINARY_DIR}/_deps + --quiet + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "Running cppcheck on course modules (build once before running this target)" + VERBATIM + ) + + add_custom_target( + cppcheck_project + COMMAND + "${CPPCHECK_EXECUTABLE}" + --project=${_compile_commands} + --enable=warning,style,performance + --std=c++26 + --inline-suppr + --suppressions-list=${_suppressions} + --quiet + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "Running cppcheck on entire project (build once before running this target)" + VERBATIM + ) +endfunction() diff --git a/cppcheck/suppressions.txt b/cppcheck/suppressions.txt new file mode 100644 index 0000000..3de5ad3 --- /dev/null +++ b/cppcheck/suppressions.txt @@ -0,0 +1,8 @@ +# Suppress Cppcheck noise for this GCC 16 / C++26 project. +# +# The CLion Cppcheck plugin analyzes headers in isolation and often reports +# false positives (missing system includes, GCC libstdc++ syntax errors). +# Prefer: cmake --build build --target cppcheck_modules + +missingIncludeSystem +syntaxError