Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Просмотр статистики количества ошибок в…

Просмотр статистики количества ошибок в проекте, или "Ого, в PVS-Studio появились графики!"

30 Июл 2015

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

0341_Excel_ru/image1.png

Итак, какая проблема с инструментами статического анализа помимо того, что они стоят дорого? Не всегда команда, которая приобрела инструмент может похвастаться тем, что ошибки с его помощью правятся. А мы как никто другой заинтересованы в эффективном использовании нашего инструмента. Нас не устроит, если клиент просто купит лицензию и положит ее на полку. Ведь у нас более половины клиентов продлевают лицензии на следующий год. Поэтому наша задача показать эффективность использования нашего инструмента для тех, кто принимает решение о продлении лицензии.

Поэтому в PVS-Studio 5.27 появилась возможность строить графики количества ошибок, обнаруженных анализатором при проверке проекта. Идея этой возможности очень простая:

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

Прежде чем смотреть конкретные графики, буквально пара слов о технологии. Подробнее об этой возможности можно прочитать в документации.

При каждой проверке всего кода (команда Check Solution) анализатор сохраняет в папке %AppData%\Roaming\PVS-Studio\Statistics небольшой XML файл в котором записано количество сообщений. В меню PVS-Studio есть команда Analysis Statistics, которая открывает диалог настройки показа статистики. Выберем временной интервал, выбираем интересные нам анализаторы и важность сообщений. Затем по кнопке "Show in Excel" открывается установленный на машине Microsoft Excel в котором строится нужный график.

Нет смысла долго рассказывать про этот диалог, все описано в документации. Поэтому давайте лучше рассмотрим возможные ситуации на примерах.

Как выглядит график, когда после внедрения все ошибки (и старые, и новые) правятся?

Рассмотрим первый пример. Компания купила PVS-Studio, начинает его внедрять. Пусть нас интересуют ошибки класса General Analysis (GA) причем для начала только наиболее важные и средние по важности. При первом запуске PVS-Studio выдает примерно 1800 сообщений. Сначала разработчики разбираются с наиболее очевидными ложными срабатываниями. Например, отключают их через подавление в макросах. Правят более простые ошибки, которые даются легко. Со временем скорость работы с сообщениями немного замедляется. Именно поэтому график имеем вид не прямой линии, а дугообразный.

Ошибок становится все меньше и меньше, наконец когда-то их становится 0. Вот график, описывающий такой режим работы команды над ошибками PVS-Studio:

0341_Excel_ru/image2.png

Рисунок 1 – Сначала правятся легкие ошибки, потом посложнее и самые сложные остаются в конце.

Все, все срабатывания анализатора проработаны, выдается 0 ошибок. Можно ли расслабиться? Нет. Ведь если расслабиться и дальше отключить анализатор (не править новые ошибки, то со временем количество ошибок начнет расти. Пример такого графика приведен на рисунке 2.

0341_Excel_ru/image3.png

Рисунок 2 – После того как сначала все ошибки были исправлены, разработчики расслабились и перестали реагировать на сообщения анализатора.

Видите на этом графике показан рост количества сообщений? Это из-за того, что, доведя количество срабатываний до нуля, разработчики перестали править ошибки в новом коде. К счастью менеджер проекта вовремя спохватился и заметил, что ошибки не правят. Поэтому после разговоров с командой в проекте вновь стало 0 ошибок. И уже столько и поддерживалось в ежедневном режиме.

Пример неправильного вывода о результатах работы команды на основе графика

Ладно, а что можно сказать по графику на рисунке 3?

0341_Excel_ru/image4.png

Рисунок 3 – Пример графика с двойным толкованием.

На первый взгляд можно сказать, что команда разленилась, ничего не правит и у нее растет количество ошибок. Причем довольно сильно – с 2700 до 3700 за период. Но этот вывод может сделать человек, совсем не знакомый с проектом. Если же знать, чем люди занимаются, то становится понятно. В проект добавлялся новый код в большом объеме (подключались новые проектные файлы к общему решению .sln). И ничего страшного в таком графике нет. Ведь дальше количество проектов стабилизируется, ошибки расти сильно не будут, если команда начнет их править вовремя.

Этот график приведен как пример того, что нельзя "влоб" интерпретировать данные статистики, нужно еще понимать, что делает команда в тот или иной момент времени.

Откуда берутся ступеньки?

Нередко правильный вид графика при равномерной работе напоминает ступеньки как на рисунке 4.

0341_Excel_ru/image5.png

Рисунок 4 – Ступенчатый график.

Такой ступенчатый график – самый правильный, ведь он означает равномерную работу команды по исправлению ошибок. Догадались откуда берутся ступеньки, когда количество ошибок не уменьшается? Конечно же это выходные.

Как выглядит график "только новых" ошибок?

Ладно, до этого были примеры, когда команда работала над исправлением всех ошибок, которые выдает анализатор кода. Но ведь суть функции "массового подавления ошибок" в том, чтобы сказать: "Ладно, мы знаем, что у нас есть много сообщений PVS-Studio на старый код. Но сейчас мы хотим закрыть на него глаза и править ошибки только в новом коде". Как будет выглядеть график ошибок в этом случае? Рисунок 5 отвечает на этот вопрос.

0341_Excel_ru/image6.png

Рисунок 5 – График количества ошибок для только нового кода.

Хотя на первый взгляд график выглядит хаотично, именно так и должен выглядеть нормальный рабочий процесс с использованием анализатора кода. Что имеется ввиду? Обратите внимание на масштаб по оси Y. Максимальное значение здесь 8 – это максимум, сколько ошибок (срабатываний анализатора) было добавлено за один день. Скажете, что это много? Но если речь о команде в 50 разработчиков и 9 млн строка кода, то согласитесь, это очень даже неплохой результат. Но гораздо важнее то, что эти правятся на следующий день.

Какой правильный сценарий использования PVS-Studio, чтобы "график был идеальный"?

Итак, мы поняли, как выглядят "неправильные" графики и как выглядят "правильные". Но как должен быть построен процесс разработки для того, чтобы графики ошибок PVS-Studio были "правильными"? Что должен организовать менеджер проекта или технический руководитель?

Вот шаги, которые приведут к наиболее эффективному результату:

  • Настройте ежедневную проверку кода с помощью PVS-Studio на сборочном сервере. Это поможет вам контролировать процесс правки ошибок и накапливать историю, которую легко затем визуализировать.
  • Всем разработчикам установите PVS-Studio и включите режим инкрементального анализа. В этом режиме PVS-Studio следит за тем, какие файлы правит разработчик на своей машине. И после их успешной компиляции автоматически проверяет. В случае обнаружения ошибок они будут конечно показаны. Преимущество такого режима в том, что разработчику не надо явно запускать анализатор. И увидев сообщение от него, он может сразу исправить код. В этом случае ошибочный код даже не попадет в систему контроля версий.
  • Если все-таки ошибочный код попадет в систему контроля версий, то при ночной проверке он будет обнаружен. Очень важно, чтобы утром разработчики увидели отчет по результатам ночного запуска. Тогда они смогут исправить ошибки. PVS-Studio автоматически формирует файл-отчет с найденными ошибками в формате .html, который можно разослать заинтересованным лицам.

Если команда сможет войти в такой режим использования анализатора кода, то внедрение инструмента не будет напрасным. А вопрос о продлении лицензии на следующий год решится сам собой.

Популярные статьи по теме
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

Автор: Андрей Карпов

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
Зло живёт в функциях сравнения

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Любите статический анализ кода!

Дата: 16 Окт 2017

Автор: Андрей Карпов

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
Эффект последней строки

Дата: 31 Май 2014

Автор: Андрей Карпов

Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого …
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…
PVS-Studio для Java

Дата: 17 Янв 2019

Автор: Андрей Карпов

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний

Дата: 31 Июл 2017

Автор: Андрей Карпов

После большой статьи про проверку операционной системы Tizen мне было задано много вопросов о проценте ложных срабатываний и о плотности ошибок (сколько ошибок PVS-Studio выявляет на 1000 строк кода)…
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

Автор: Андрей Карпов

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

Дата: 21 Ноя 2018

Автор: Андрей Карпов

Краткое описание технологий, используемых в инструменте PVS-Studio, которые позволяют эффективно обнаруживать большое количество паттернов ошибок и потенциальных уязвимостей. Статья описывает реализа…

Комментарии (0)

Следующие комментарии

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