При написании программ, очень часто программисты делают ошибки. Большую часть из них отлавливает компилятор, но некоторые, при беглом осмотре, не являются ошибками, но могут привести к непредсказуемым глюкам и багам, на отлов которых можно потратить очень много времени.

Для, поиска подобных проблем были созданы специальные утилиты - статические анализаторы кода.

Сегодня мы рассмотрим установку и использование статического анализатора кода Cppcheck в среде разработки Qt Creator.

 

Установка

Скачайте дистрибутив с программой с сайта проекта:

https://github.com/danmar/cppcheck/releases/

На момент написания статьи — это версия 2.3

Просто ставим всё по умолчанию.

Запускаем Qt Creator и переходим в меню Справка – О модулях

2021-02-01_17-29-50.png

Пролистываем вниз, пока не найдем пункт Code Analyzer и ставим галочку напротив Cppcheck (экспериментально)

2021-02-01_17-30-33.png

Нажимаем Закрыть и Перезапустить.

После запуска модуль с сppcheck будет активирован

Откройте пункт меню Анализ - Cppcheck

2021-02-01_17-33-44.png

Если в поле «Программа» пусто – укажите C:\Program Files\Cppcheck\cppcheck.exe

Установите все галочки.

Выберите cpp и h файлы в своем проекте

2021-02-01_17-47-16.png

Нажмите Анализировать.

Анализ проекта

Для анализа возьмем один из моих проектов.

Настроим анализатор и выберем все *.h и .cpp файлы.

После нажатия кнопки анализировать, открывается окно со всеми найденными проблемами:

2021-02-02_17-38-50_2.png

Щелкнув по любой строке, вы можете открыть описание всех проблем в файле и перейти к проблеме.

Запустим сборку.

После окончания сборки в окне редактора появятся новые сообщения.

2021-02-02_17-49-38.png

Заключение

Сегодня мы рассмотрели установку статического анализатора кода Cppcheck и плагина для среды разработки Qt Creator.

Мы скачали и установили саму программу и плагин в среде разработки.

Настроили плагин для проекта и получили предупреждения от Cppcheck.

В следующей статье мы рассмотрим причину появления сообщений вида:

Function parameter 'xxxxxxxx' should be passed by const reference.

И причины, по которым не стоит передавать аргументы в функцию по значению.