Слайд 2Статический анализатор clang. Пакеты
![Статический анализатор clang. Пакеты](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1062989/slide-1.jpg)
Слайд 3Статический анализатор clang для проектов
scan-build команда_сборки
scan-build gcc -c file.c -o file
scan-view каталог_с_отчетами
Пример:
mkdir
![Статический анализатор clang для проектов scan-build команда_сборки scan-build gcc -c file.c -o](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1062989/slide-2.jpg)
build && cd build
scan-build ../configure -prefix=$(pwd)/../install
scan-build make
Слайд 4Расширение статического анализатора clang
Определение и реализация подкласса Checker
Регистрация в пакете alpha
Сборка и
![Расширение статического анализатора clang Определение и реализация подкласса Checker Регистрация в пакете](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1062989/slide-3.jpg)
тестирование нашего средства проверки (см. пример ReactorChecker.cpp)
Слайд 5Инструменты Clang и LibTooling
Установить Clang Extra Tools
Создать базу данных команд комиляции
mkdir build
![Инструменты Clang и LibTooling Установить Clang Extra Tools Создать базу данных команд](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1062989/slide-4.jpg)
&& cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
ln -s compile_commands.json ..
или
libtool test.c -- -Iinclude прочие_параметры_компиляции
Слайд 6Инструменты Clang и LibTooling
Clang-tidy – проверки на нарушение стандартов оформления
Clang-modernize – адаптация
![Инструменты Clang и LibTooling Clang-tidy – проверки на нарушение стандартов оформления Clang-modernize](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1062989/slide-5.jpg)
старого кода под новые стандарты, например С++11
Clang-apply-replacements – в помощь Clang-modernize для больших проектов
Clang-format – форматирование С/C++ кода
Modularize и module-map-checker – решение проблем внедрения модулей (*.cpp), анализ заголовочный файлов, глобальных переменных
Pp-trace – вывод трассы работы препроцессора
Clang-query и clang-check – работа с AST-деревом
Remove-cstr-calls – удаление .c_str() вызовов
Создание собственного инструмента рефакторинга, например переименование переменных (см. IzzyRefactor.cpp)