Массовое подавление сообщений анализатора (отключение выдачи предупреждений на существующий код)


В данной статье рассматривается использование механизма массового подавления сообщений анализатора в среде Windows. Использование соответствующей функциональности в среде Linux описано в соответствующем разделе документа "Как запустить PVS-Studio в Linux".

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

Если же вы хотите скрыть только отдельные сообщения (например, ложные срабатывания), воспользуйтесь механизмом подавления ложных срабатываний. Также стоит помнить, что если вы хотите скрыть только отдельный вид сообщений или группу диагностик, то для этого можно воспользоваться механизмом фильтрации сообщений в окне PVS-Studio.

Принцип работы

Механизм подавления основан на использовании специальных файлов "баз" сообщений анализатора (файлы с расширением suppress), которые добавляются рядом с проектными файлами вашего IDE (например, с файлами vcproj и vcxproj у Microsoft Visual Studio) либо включаются в проектные файлы как некомпилируемые файлы (не более одного файла на проект). Эти файлы содержат сообщения, размеченные для данного проекта, как "ненужные" (на разметке сообщений с помощью интерфейса IDE плагина PVS-Studio мы остановимся в следующем разделе).

При последующих проверках файлов данного проекта анализатором PVS-Studio IDE плагин автоматически будет проверять наличие таких файлов рядом с файлом проекта и, в случае их обнаружения, не будет показывать сообщения, которые содержатся в такой "базе". Заметим, что модификация исходного файла, содержащего размеченные сообщения, и, в частности, сдвиг строк, не приведёт к повторному появлению этих сообщений. Однако правка строки, содержащей это сообщение, может привести к его повторному появлению, т.к. такое сообщение уже становится "новым".

Suppress файлы представляют собой достаточно простые XML документы, что позволяет легко их просматривать\редактировать, а также использовать в командной разработке посредством системы контроля версий.

Использование механизма подавления

Для разметки сообщений анализатора вам необходимо сначала проверить ваши проекты (PVS-Studio -> Check -> Solution). После этого откройте окно 'Suppress Analyzer Messages' с помощью пункта меню PVS-Studio -> Suppress Messages.

Рисунок 1 - Подавление сообщений

Рисунок 1 - Подавление сообщений

Нажмите кнопку 'Suppress All' для подавления всех сообщений анализатора, сгенерированных во время последнего запуска анализа, либо загруженных из plog файла. Кнопка 'Suppress Filtered' позволяет подавить только те сообщения, которые отображены в окне результатов PVS-Studio. Так, например, можно подавить только сообщения низкой достоверности (3 уровень) чтобы сконцентрироваться на работе с более критичными сообщениями.

После подтверждения все сообщения из окна будут добавлены в suppress файлы соответствующих проектов. В списке Active suppress files будут показаны все suppress файлы для текущего открытого решения Visual Studio. Заметьте также, что вы можете при необходимости снять подавление с сообщений отдельного проекта, выбрав соответствующий suppress файл в этом списке и нажав 'Un-suppress from Selected'.

При последующих проверках вы не увидите размеченных подобным образом сообщений, что позволит сконцентрироваться на сообщениях во вновь написанном коде. Однако, несмотря на то, что этих сообщений не видно в списке, они в нём всё равно присутствуют.

Для того, чтобы отобразить в окне PVS-Studio размеченные подобным образом сообщения, используйте переключатель 'Display Suppressed Messages in PVS-Studio Output Window' (рисунок 1). "Подавленные" сообщения отображаются в списке в "зачёркнутом" виде. Вы можете убрать отметку "подавленного сообщения", используя пункт меню 'Un-Suppress Selected Messages'.

Рисунок 2 - Удаление сообщений из "подавленных"

Рисунок 2 - Удаление сообщений из "подавленных"

С выбранных сообщений будет снята отметка "подавленных", и они будут удалены из suppress файлов в случае, если в IDE открыт соответствующий им проект.

Добавление suppress файлов в проекты

После создания файла вы можете включить его в проект как некомпилируемый\текстовый файл с помощью команды меню 'Add|Existing Item...'. При наличии в проекте хотя бы одного suppress файла, файлы рядом с самим проектным файлом будут игнорироваться. Такое добавление позволяет держать suppress файлы и файлы проектов в разных директориях. Поддерживается добавление не более одного suppress файла на проект - остальные будут игнорироваться.

Подавление сообщений анализатора из командной строки

Механизм подавления сообщений можно также использовать напрямую из командной строки. Утилита командной строки PVS-Studio_Cmd.exe автоматически подхватывает существующие suppress файлы при проверке. Также её можно использовать для подавления ранее сгенерированных сообщений анализатора, сохранённых в plog файле. Для подавления сообщений из существующего plog файла необходимо запустить PVS-Studio_Cmd.exe с флагом '--suppressAll'. Например (в одну строку):

"C:\Program Files (x86)\PVS-Studio\PVS-Studio_Cmd.exe"
-t "Solution.sln" -o "results.plog" --suppressAll SuppressOnly

Исполнение команды сгенерирует suppress файлы для всех проектов, содержащихся в Solution.sln, на которые были сгенерированы сообщения в results.plog.

Флаг '--suppressAll' поддерживает 2 режима работы. SuppressOnly запустит подавление для переданного plog'а без перезапуска анализа. AnalyzeAndSuppress сначала выполнит анализ, запишет выходной plog файл, и только затем подавит все сообщения из него. Такой режим запуска позволит видеть только новые сообщения анализатора в каждом последующем запуске (т.к. сообщения с предыдущих запусков будут подавлены).


А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++ и C#

goto PVS-Studio;
На нашем сайте мы используем cookie для сбора информации технического характера.
Если вы не согласны, пожалуйста, покиньте сайт. Подробнее →
Больше не показывать