Конвертация результатов анализа (утилита PlogConverter)

В данном разделе рассматривается конвертация логов для Windows. Конвертация логов в Linux и macOS описана в документе "Как запустить PVS-Studio в Linux и macOS".

Результатом проверки проекта с помощью PVS-Studio (плагин Visual Studio, или же в режиме из консоли) обычно является XML файл отчета анализатора (".plog"). При использовании прямой интеграции анализатора в сборочную систему, результатом работы является необработанный вывод C++ анализатора. Такие файлы можно просматривать через плагин PVS-Studio для Visual Studio, либо через приложение C and C++ Compiler Monitoring UI. Эти форматы отчёта, однако, не удобны, например, для прямого просмотра в текстовом редакторе, рассылки по электронной почте и т.п. В состав дистрибутива PVS-Studio среди прочего входит утилита PlogConverter, позволяющая преобразовывать результаты анализа в другие форматы.

Утилита PlogConverter

Открыв отчет с помощью текстового редактора, пользователь столкнется с XML-разметкой или нечитаемым "сырым" выводом анализатора. Для наглядного представления результатов анализа можно воспользоваться утилитой PlogConverter, поставляемой в дистрибутиве PVS-Studio. Утилиту PlogConverter можно найти в установочной директории PVS-Studio (по умолчанию это путь "C:\Program Files (x86)\PVS-Studio"). Вы также можете скачать исходный код утилиты.

Параметры утилиты

Флаг "--help" выведет основную информацию об утилите:

PlogConverter.exe --help

Рассмотрим детально каждый параметр утилиты:

  • --renderTypes (или -t): задает возможные варианты конвертации отчета. Поддерживаемыми форматами являются Html, FullHtml, Totals, Txt, Csv, Tasks, Plog, TeamCity. Если задан неявно, то отчет конвертируется во все форматы
    • Html: конвертирует сообщения анализатора в html-файл (удобно использовать в автоматических рассылках на email).
    • FullHtml: конвертирует сообщения анализатора и исходные файлы в html-файлы (можно просматривать отчёт анализатора в браузере с сортировкой по сообщениям и навигацией по коду).
    • Txt: конвертирует сообщения анализатора в текстовый файл.
    • Csv: конвертирует сообщения анализатора в формат файла с разделителями (удобно читаем, например, в Microsoft Excel).
    • Totals: выводит суммарную информацию о количестве предупреждений разных типов (GA, OP, 64, CS, MISRA) и разных уровней достоверности. Детальное описание уровней достоверности предупреждений и наборов диагностических правил приведено в разделе документации "Знакомство со статическим анализатором кода PVS-Studio".
    • Tasks: конвертирует сообщения анализатора в формат файла для просмотра в QtCreator.
    • Plog: позволяет соединить несколько xml отчетов в один или преобразовать необработанный вывод анализатора в xml лог.
    • TeamCity: конвертирует сообщения анализатора в файл, предназначенный для загрузки и просмотра в TeamCity CI.

Возможна комбинация разных форматов через "," (без пробелов), например:

PlogConverter.exe D:\Projct\results.plog --renderTypes=Html,Csv,Totals

или

PlogConverter.exe D:\Projct\results.plog -t Html,Csv,Totals
  • --analyzer (или -a): производит фильтрацию предупреждений согласно маске. Маска фильтрации имеет следующий вид:
MessageType:MessageLevels

"MessageType" может принимать один из следующих типов: GA, OP, 64, CS, MISRA, Fail

"MessageLevels" может принимать значения от 1 до 3

Возможна комбинация разных масок через ";" (без пробелов), например (одной строкой):

PlogConverter.exe D:\Projct\results.plog --renderTypes=Html,Csv,Totals
--analyzer=GA:1,2;64:1

или

PlogConverter.exe D:\Projct\results.plog -t Html,Csv,Totals -a GA:1,2;64:1

Запись соответствует следующей логике: сконвертировать ".plog" в Html, Csv, Totals отчеты, оставив только предупреждения общего назначения (GA) 1-ого и 2-ого уровней и 64-битные ошибки (64) 1-ого уровня.

  • --excludedCodes (или -d): задает список предупреждений (через ","), которые не следует включать в результирующий отчет. Например, нужно убрать предупреждения V101, V102, V200 (одной строкой):
PlogConverter.exe D:\Projct\results.plog --renderTypes=Html,Csv,Totals
--excludedCodes=V101,V102,V200

или

PlogConverter.exe D:\Projct\results.plog -t Html,Csv,Totals -d V101,V102,V200
  • --settings (или -s): задает путь к файлу конфигурации PVS-Studio. PlogConverter прочитает настройки отключенных предупреждений из переданного файла настроек, указанных в конфигурации. По сути, этот параметр расширяет список отключаемых предупреждений параметра "--excludedCodes".
  • --srcRoot (или -r): задает замену "SourceTreeRoot" маркера. Если при проверке путь до корневого каталога проекта был заменен на "SourceTreeRoot" маркер (|?|), то этот параметр становится обязательным (иначе файлы проекта не будут найдены).
  • --outputDir (или -o): задает директорию, куда будут сохранены конвертированные отчеты. Если параметр не задан, то файлы записываются рядом с "PlogConverter.exe".
  • --outputNameTemplate (или -n): задает шаблонное имя файла без расширения. Все конвертированные отчеты будут иметь одно и то же имя, но с разными расширениями (в зависимости от "--renderTypes", это могут быть ".txt", ".html", ".csv", ".tasks", ".plog").
  • --errorCodeMapping (или -m): включить отображение CWE ID и MISRA ID для найденных предупреждений: " -m cwe,misra".
  • --indicate-warnings (или -w): устанавливает возвращаемый код утилиты PlogConverter равный '2', если после фильтрации лога в отфильтрованном выходном файле (файлах) остались предупреждения.

Коды возврата

Утилита PlogConverter имеет несколько ненулевых кодов возврата, которые не означают проблемы в работе самой утилиты, т.е. даже если утилита вернула не '0', это ещё не означает, что она отработала с ошибкой. Приведём описание всех возможных кодов возврата, которые может вернуть PlogConverter.

  • '0' - конвертация отчёта прошла успешно;
  • '1' - при генерации одного из выходных файлов возникла ошибка;
  • '2' - выходной отчёт содержит неотфильтрованные или неподавленные предупреждения. Чтобы PlogConverter завершал свою работу кодом 2 при условии, что в выходном файле остались неотфильтрованные предупреждения, необходимо передавать утилите флаг --indicate-warnings (-w);
  • '3' - общая (неспецифичная) ошибка при работе утилиты, перехваченное исключение при работе. Обычно это сигнализирует о наличии ошибки в коде самого PlogConverter'а;
  • '4' - утилите были переданы неверные аргументы командной строки, или один из файлов, переданный как аргумент, не был найден или не существует.

Автоматическое оповещение о предупреждениях анализатора

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

Более подробно данная утилита описана в соответствующем разделе документации: "Оповещение команд разработчиков (утилита blame-notifier)".

Примечание. Утилита BlameNotifier доступна только при наличии Enterprise лицензии. Для получения лицензии, пожалуйста, напишите нам.


Найденные ошибки

Проверено проектов
409
Собрано ошибок
14 072

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

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

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

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