PVS-Studio: 2 фишки для быстрого старта

от автора

1013_2Features_ru/image1.png

В этой заметке расскажу, как легко начать использовать PVS-Studio. Рассмотрим два сценария: когда вы пробуете анализатор впервые и когда внедряете его в проект.

Пробуете впервые? Посмотрите лучшие предупреждения

Что я жду, когда запускаю анализ проекта? В первую очередь — найдёт ли анализатор что-то интересное. И здесь есть 2 крайности:

  1. Анализатор ничего не нашёл.
  2. Анализатор нашёл очень много.

Рассмотрим оба случая.

#1. Все нужные группы диагностик включены, анализ прошёл успешно, а PVS-Studio всё равно ничего не нашёл? Это хороший сценарий, но стоит помнить — часто разовой проверки недостаточно.

Попробуйте регулярно запускать анализ проекта на протяжении какого-то времени. Так анализатор сможет найти те проблемы, которые ещё не успела обнаружить и исправить команда. Это и покажет пользу инструмента.

Подробнее мысль раскрыта в небольшой заметке, рекомендую прочитать.

#2. Допустим, анализатор выдал несколько десятков, а то и сотен предупреждений. Вот бы посмотреть самые интересные… Решение — фильтр «Best warnings». Расскажу о нём в двух словах.

Среди всех предупреждений фильтр «Best warnings» отбирает самые интересные: они должны быть разнообразными и указывать на тот код, который скорее всего содержит ошибку.

Фильтр работает в один клик, а предупреждений в подборке будет не больше 10 — посмотреть их можно быстро.

1013_2Features_ru/image2.gif

Фильтр «Best warnings» доступен в приложении «C and C++ Compiler Monitoring UI», а также в плагинах PVS-Studio для:

  • Visual Studio;
  • Rider;
  • CLion;
  • IntelliJ IDEA.

Больше информации о «Best Warnings» собрали в документации.

**

Хочу сразу ответить на несколько возможных вопросов:

  • «Best warnings» — не новая фишка: она доступна с релиза PVS-Studio 7.15. Что нового в версии 7.22?
  • Предупреждения из списка «Best warnings» не впечатлили. Что не так?

Ответы под спойлерами.

Best warnings: что нового в PVS-Studio 7.22?

  1. Увеличили количество мест, где можно использовать фильтр. Теперь это не только Visual Studio, но и JetBrains Rider, CLion, IntelliJ IDEA, а также C and C++ Compiler Monitoring UI.
  2. Изменили интерфейс: кнопка фильтрации располагается на главной панели. Если нужно, её можно скрыть через настройки.
  3. Скорректировали «веса» для диагностик: выборка предупреждений должна стать лучше.

Лучшие предупреждения не впечатлили

Алгоритм неидеален. Пожалуйста, напишите нам, если подборка предупреждений не понравилась или в неё попали false positives. Мы подумаем, как можно улучшить выборку.

Если подборка не понравилась, посмотрите предупреждения с уровнем «High» и «Medium» из полного отчёта анализатора: возможно, там вы найдёте что-то интересное.

Внедряете в проект? Скройте предупреждения на legacy-код

Я решил внедрить PVS-Studio в процесс разработки. Проект старый, с большим объёмом legacy. Запустил анализатор и получил несколько сотен предупреждений. Как быть? Как найти и исправить новое предупреждение, когда их количество изменится с 673 на 674? Ответ — скрыть предупреждения на legacy-код.

1013_2Features_ru/image3.gif

Алгоритм:

  1. Скрываем все текущие предупреждения, они будут тех. долгом. Теперь анализатор показывает 0 предупреждений.
  2. Следим за появлением новых предупреждений. Как появляются, сразу исправляем. Таким образом контролируем качество и безопасность кода.

Скрыть предупреждения на legacy-код можно с помощью механизма подавления.

Итоги

Как упростить знакомство с PVS-Studio:

  • если пробуете впервые, посмотрите на самые интересные предупреждения. Поможет фильтр «Best warnings» (документация);
  • если внедряете в процесс разработки, скройте все предупреждения на legacy-код. Поможет механизм подавления (документация).

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

Загрузить последнюю версию PVS-Studio можно здесь.


ссылка на оригинал статьи https://habr.com/ru/articles/704212/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *