Поддержка Cppcheck в cmake
Я не спрашиваю о различных доступных модулях thirdparty, которые так или иначе поддерживают cppcheck.
с cmake 3.9 cmake, похоже, получил некоторую официальную поддержку cppcheck. см.CMAKE__CPPCHECK
к сожалению, документация по использованию этой переменной немного разрежена. У кого-нибудь есть хороший пример того, как cppcheck должен использоваться с cmake >3.9?
1 ответов
An простой пример: было бы - если у вас есть cppcheck
в своем PATH
и вы не указываете дополнительные параметры-следующее, установив global CMAKE_<LANG>_CPPCHECK
переменной:
cmake_minimum_required(VERSION 3.10)
project(CppCheckTest)
file(
WRITE "main.cpp"
[=[
int main()
{
char a[10];
a[10] = 0;
return 0;
}
]=]
)
set(CMAKE_CXX_CPPCHECK "cppcheck")
add_executable(${PROJECT_NAME} "main.cpp")
файлы для сканирования автоматически добавляются в cppcheck
командная строка. Таким образом, приведенный выше пример дает следующий вывод (gcc
и cppcheck
в системе Linux):
# make
Scanning dependencies of target CppCheckTest
[ 50%] Building CXX object CMakeFiles/CppCheckTest.dir/main.cpp.o
Checking .../CppCheckTest/main.cpp...
Warning: cppcheck reported diagnostics:
[/mnt/c/temp/StackOverflow/CppCheckTest/main.cpp:4]: (error) Array 'a[10]' accessed at index 10, which is out of bounds.
[100%] Linking CXX executable CppCheckTest
[100%] Built target CppCheckTest
вы могли бы дать cppcheck
попробуйте в существующем проекте, просто установка CMAKE_CXX_CPPCHECK
переменной через cmake
командная строка:
# cmake -DCMAKE_CXX_CPPCHECK:FILEPATH=cppcheck ..
более" повседневная жизнь " пример, вероятно, для вас, чтобы включить что-то вроде следующего фрагмента кода в вашем CMakeList.txt
:
find_program(CMAKE_CXX_CPPCHECK NAMES cppcheck)
if (CMAKE_CXX_CPPCHECK)
list(
APPEND CMAKE_CXX_CPPCHECK
"--enable=warning"
"--inconclusive"
"--force"
"--inline-suppr"
"--suppressions-list=${CMAKE_SOURCE_DIR}/CppCheckSuppressions.txt"
)
endif()
ссылки
- CMake Commit: добавить свойства для запуска cppcheck вместе с компилятором
-
<LANG>_CPPCHECK
целевой собственностьэтот свойство поддерживается только при
<LANG>
isC
илиCXX
.укажите; - список, содержащий командную строку для
cppcheck
инструмент статического анализа. Генераторы Makefile и генератор ниндзя будут работатьcppcheck
вместе с компилятором и сообщать о любых проблемах.это свойство инициализируется значением
CMAKE_<LANG>_CPPCHECK
переменная, если она установлена при создании цели.