1+ macro (untiguard_add_code_checks)
2+
3+ set (options )
4+ set (singleValueArgs PREFIX UNCRUSTIFY_CFG_FILE )
5+ set (multiValueArgs EXCLUDES )
6+
7+ # Parse the arguments to the macro
8+ cmake_parse_arguments (arg
9+ "${options} " "${singleValueArgs} " "${multiValueArgs} " ${ARGN} )
10+
11+ set (_all_sources)
12+ file (GLOB_RECURSE _all_sources
13+ "*.cpp" "*.hpp" "*.cxx" "*.hxx" "*.cc" "*.c" "*.h" "*.hh" )
14+
15+ # Check for excludes
16+ if (NOT DEFINED arg_EXCLUDES)
17+ set (_sources ${_all_sources} )
18+ else ()
19+ set (_sources)
20+ foreach (_source ${_all_sources} )
21+ set (_to_be_excluded FALSE )
22+ foreach (_exclude ${arg_EXCLUDES} )
23+ if (${_source} MATCHES ${_exclude} )
24+ set (_to_be_excluded TRUE )
25+ break ()
26+ endif ()
27+ endforeach ()
28+
29+ if (NOT ${_to_be_excluded} )
30+ list (APPEND _sources ${_source} )
31+ endif ()
32+ endforeach ()
33+ endif ()
34+
35+ set ( CPPCHECK_FLAGS --std=c++17
36+ --enable=all
37+ --suppress=missingIncludeSystem
38+ --suppress=unmatchedSuppression
39+ --suppress=missingInclude
40+ --suppress=noConstructor
41+ --suppress=noExplicitConstructor
42+ --suppress=unusedFunction
43+ --suppress=constStatement
44+ --suppress=unusedStructMember )
45+
46+ blt_add_code_checks( PREFIX ${arg_PREFIX}
47+ SOURCES ${_sources}
48+ UNCRUSTIFY_CFG_FILE ${PROJECT_SOURCE_DIR} /src/uncrustify.cfg
49+ CPPCHECK_FLAGS ${CPPCHECK_FLAGS}
50+ )
51+
52+ if ( CPPCHECK_FOUND )
53+ add_test ( NAME testCppCheck
54+ COMMAND bash -c "make cppcheck_check 2> >(tee cppcheck.err) >/dev/null && exit $(cat cppcheck.err | wc -l)"
55+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
56+ )
57+ endif ()
58+
59+ if ( CLANGTIDY_FOUND )
60+ add_test ( NAME testClangTidy
61+ COMMAND bash -c "make clang_tidy_check 2> >(tee tidyCheck.err) >/dev/null && exit $(cat tidyCheck.err | wc -l)"
62+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
63+ )
64+ endif ()
65+
66+
67+ if (ENABLE_COVERAGE)
68+ blt_add_code_coverage_target(NAME ${arg_PREFIX} _coverage
69+ RUNNER ctest -E 'blt_gtest_smoke|testCppCheck|testClangTidy|testUncrustifyCheck|testDoxygenCheck|testCppCheck|testClangTidy'
70+ SOURCE_DIRECTORIES ${PROJECT_SOURCE_DIR} /src )
71+ endif ()
72+ endmacro (untiguard_add_code_checks)
0 commit comments