Как использовать параметр встроенного фильтра подавления cppcheck для кода C++?

Я хотел бы использовать Cppcheck для статического анализа кода моего кода C++. Я узнал, что я могу подавить некоторые предупреждения с --inline-suppr команда. Тем не менее, я не могу найти то, что "suppressed_error_id" я должен поместить в комментарии:

// cppcheck-suppress "suppressed_error_id"

4 ответа

Решение

Согласно справке cppcheck:

Идентификатор ошибки - это идентификатор, который вы хотите подавить. Самый простой способ получить это - использовать флаг командной строки --xml. Скопируйте и вставьте строку идентификатора из вывода XML.

Так что запустите cppcheck для некоторого кода, который содержит ошибку с --xml флаг, а затем посмотрите в сгенерированный файл XML, чтобы найти его имя.

Вы можете изменить шаблон вывода для отображения идентификатора ошибки из командной строки, что довольно аккуратно.

Для вывода в формате Visual Studio с отображаемым идентификатором ошибки добавьте это в командную строку:

--template "{file}({line}): {severity} ({id}): {message}"

Это будет производить что-то вроде этого:

s:\src\jpeg.cpp(123): error (bufferAccessOutOfBounds): Buffer access out-of-bounds: abRY

Что вы можете затем подавить, добавив строку:

// cppcheck-suppress bufferAccessOutOfBounds

К предыдущей строке в исходном файле.

Согласно справочной странице cppcheck, вы можете использовать --template возможность изменить вывод по умолчанию, чтобы включить идентификатор, например,

cppcheck /the/src/file --template='{file}:{line},{severity},{id},{message}'

Если вы используете графический интерфейс, вы можете щелкнуть правой кнопкой мыши на сообщении, которое вы хотите запретить, чтобы открыть меню. Выберите "Скопировать идентификатор сообщения". Вставьте идентификатор сообщения в свой код вместо "suppressed_error_id".

Другие вопросы по тегам