dsp-site/wiki/Prog/Development/Статический анализ кода.md
2019-04-24 17:17:12 +03:00

133 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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