Перейти к содержанию
  1. Posts/

Cppcheck для анализа Qt проектов

·339 слов·2 минуты

Использование 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