Cppcheck для анализа Qt проектов
Содержание
Использование cppcheck для анализа Qt проектов #
cppcheck - статический анализатор C++. Для анализа больших проектов требуется его настройка, позволяющая правильно искать и использовать библиотеки и другие зависимые во время компиляции параметры.
Для анализа Qt проектов существует утилита qpt, которая может производить анализ проектных файлов и получение из них информации об используемых исходниках, обо всех параметрах, передаваемых компилятору и другую служебную информацию.
Связка qpt и cppcheck позволяет провести статический анализ всего проекта без добавления вручную всех параметров cppcheck.
Установка qpt #
Qt Project Tool (qpt) можно собрать вручную из исходников.
После сборки можно добавить путь к исполняемому файлу qpt в PATH или работать с qpt используя абсолютные пути. В PATH обязательно должен присутствовать путь к qmake и cppcheck.
Запуск cppcheck на всем Qt проекте #
Для начала нужно определить список файлов проекта, которые требуют проверки:
qpt -A project.pro
Полученный список файлов нужно сохранить в файл. Пусть имя файла будет files:
qpt -A project.pro | sed -e '1,3d' > files
Для успешной проверки нужно задать INCLUDEPATH для cppcheck, как при компиляции с помощью gcc. Получить список необходимых INCLUDEPATH можно командой:
qpt -I project.pro
Нужно определить макроопределения при компиляции каждого файла в проекте:
qpt -D porject.pro
Затем нужно объединить результаты вывода qpt и передать их правильно в cppcheck.
Аргументы cppcheck: -I <путь> - для каждого INCLUDEPATH
-D<макрос> - для каждого макроопределения.
–suppress=missingInclude:* - игнорировать ошибки при поиске включений Qt (и любых других директив include).
–inconclusive - для продолжения анализа в случае невозможности компиляции файла.
-q - вывод только сообщений об ошибках.
–enable - уровни предупреждений. Рекомендую следующие уровни: perfomance,portability,style.
-i<путь> - Пути или файлы, которые следует игнорировать.
-j
–language=c++ - задать язык для всех файлов как С++.
–file-list=files - задать файл, содержащий все необходимые к проверки исходные коды.
Анализ проекта в 1 поток с помощью qpt является более простым и быстрым решением. Но при этом теряется возможность более тонкой настройки параметров, передаваемых в cppcheck. Пример команды запуска анализа всего проекта:
qpt --tool=cppcheck project.pro