vak: (Default)
[personal profile] vak
Вызов cppcheck выглядит намного проще по сравнению с clang-tidy. Но и проверяет он меньше.
cppcheck --std=c++14 --enable=style --error-exitcode=1 --inline-suppr --quiet --suppress=*:*/_deps/* --suppress=*:*/grammar.hpp --library=googletest.xml -I/some/path -DNDEBUG source.cpp
Флаг --checks задаёт список правил для проверки.

Флаги --suppress подавляют файлы, загруженные со стороны (типа Googletest) или сгенерённые посредством Bison.

Флаг --library берет из указанного файла дополнительную информацию о семантике "странных" конструкций, имеющихся в коде. К примеру, для Googletest надо описать макросы вида TEST():
<?xml version="1.0"?>
<def version="2">
<define name="TEST(A,B)" value="void __ ## A ## _ ## B ( )"/>
<define name="TEST_F(A,B)" value="void __ ## A ## _ ## B ( )"/>
<define name="GTEST_TEST(A,B)" value="void __ ## A ## _ ## B ( )"/>
</def>
Но самое приятное - cppcheck легко интегрируется с cmake. Достаточно добавить в CMakeLists.txt следующий фрагмент:
find_program(Cppcheck NAMES cppcheck)
if(NOT (Cppcheck MATCHES "NOTFOUND"))
set(CMAKE_CXX_CPPCHECK "${Cppcheck}"
"--std=c++14" # Задаём стандарт языка
"--enable=style" # Что проверять
"--error-exitcode=1" # Всякая ошибка фатальна
"--inline-suppr" # Разрешить управляющие конструкции вида // cppcheck-suppress ID
"--quiet"
"--suppress=*:*/_deps/*" # Игнорировать проблемы в Googletest
"--suppress=*:*/grammar.hpp" # Игнорировать код от Bison
"--library=${CMAKE_SOURCE_DIR}/googletest.xml" # Разпознавать макрос TEST()
)
endif()
И при сборке проекта cppcheck будет вызываться автоматически для всех файлов Си++.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org