--- title: "Статический анализ кода" category: Программирование tags: программирование, отладка, cppcheck, iwyu, clang-tidy, cpplint, clazy, summary: ... ## Общее описание Ниже приведены утилиты для проверки кода на C++ и примеры их настройки и использования совместно с [CMake](https://cmake.org/). ### [clang-tidy](http://clang.llvm.org/extra/clang-tidy/) Установка: ```sh sudo apt-get install clang-tidy-6.0 ``` Использование: ```sh cmake "-DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-6.0" path/to/source ``` В каталоге проекта нужно создать файл `.clang-tidy` в формате YAML со списком выполняемых проверок. Например: ```yaml --- Checks: '-*, clang-diagnostic-*, readability-*, modernize-*, cppcoreguidelines-*, google-*, bugprone-*' CheckOptions: - key: readability-identifier-naming.ClassCase value: CamelCase - key: readability-identifier-naming.ClassMemberCase value: camelBack ... ``` Пример файла `.clang-tidy`, в котором перечислены все правила для проверки именования идентификаторов приведён [здесь](https://git.246060.ru/f1x1t/clang-tidy-readability-identifier-naming). ### CppCheck Установка: ```sh sudo apt-get install cppcheck ``` Использование: ```sh cmake "-DCMAKE_CXX_CPPCHECK=/usr/bin/cppcheck;--std=c++11" path/to/source ``` This will run /usr/bin/cppcheck;–std=c++11″ –source=/path/to/source/file.cxx on each c++ file in the project being built. ### CppLint Установка: ```sh sudo apt-get install python3-cpplint ``` Использование: ```sh cmake "-DCMAKE_CXX_CPPLINT=/usr/bin/cpplint;--linelength=79" path/to/source ``` ```sh make -j24 2>&1 1>/dev/null | ../cpplint2tasks.pl > 222.tasks ``` This will run /usr/local/bin/cpplint –linelength=79 on each c++ file in the project being built. ### IWYU Установка: ```sh sudo apt-get install iwyu ``` Использование: ```sh cmake "-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=/usr/bin/iwyu;--transitive_includes_only" .. ``` This will run /usr/bin/iwyu –transitive_includes_only on each c++ file in the project being built. ### LWYU ```sh cmake -DCMAKE_LINK_WHAT_YOU_USE=TRUE .. ``` ### Clazy Установка: ```sh sudo apt-get install clazy clang-6.0 ``` Использование: ```sh CLAZY_CHECKS=level2 cmake -DCMAKE_CXX_COMPILER=clazy .. CLANGXX=clang++-6.0 make ``` ### PVS-Studio