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


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

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

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

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

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

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

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

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

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

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

Нажмите кнопку 'Suppress Current Messages' для подавления всех сообщений анализатора, содержащихся в окне PVS-Studio. После подтверждения все сообщения из окна будут добавлены в файлы баз соответствующих проектов. В списке Suppression Message Base Files будут показаны все suppress файлы для текущего открытого решения Visual Studio. Заметьте также, что вы можете при необходимости удалить отдельные suppress файлы, выбрав их в этом списке и нажав 'Clear Selected Files'.

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

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

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

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

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

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


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

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

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

goto PVS-Studio;