﻿# Лучшие срабатывания статического анализатора

У всех, кто запускал статический анализатор в первый раз на большом проекте, был небольшой шок по поводу сотен, тысяч или даже десятков тысяч предупреждений\. Как\-то грустно становится после такого\. То ли код настолько плох, то ли анализатор привирает\. В любом случае фильтрация по критичности поправляет ситуацию, правда не до конца\. Поэтому мы и задумались, как можно улучшить первый опыт использования анализатора\. Но обо всём по порядку\.\.\.

![0879_Best_Warnings_ru/image1.png](https://import.viva64.com/docx/blog/0879_Best_Warnings_ru/image1.png)

## Intelligence Diagnostic Filter 

Что встречает человека, который впервые запустил статический анализатор на своём коде? Если проверялся большой проект, то обычно это огромное количество всевозможных предупреждений на различные участки кода\.

Да, их может быть действительно много\. Среди них, конечно, будут и _ложные срабатывания_\. Увы, но статический анализ без них невозможен\. Поэтому нужно было придумать новый подход, который бы упростил знакомство с инструментом\.

Так и появилась идея разработать специальный механизм, который бы изучал список срабатываний и находил самые интересные среди них\. Мы назвали его **Intelligence Diagnostic Filter** или сокращённо **IDF**\.

Я не буду вдаваться в этой статье в детали его реализации\. Об этом лучше всего расскажет [разработчик](https://habr.com/users/IchNikola/), который занимался созданием этого механизма\. Так что не забудьте [подписаться на наш аккаунт на Habr](https://habr.com/company/pvs-studio/blog/), чтобы не пропустить его статью :\)

## Смотрим на первую десятку

Итак, вы [установили анализатор](https://pvs-studio.ru/ru/pvs-studio/try-free/?promo=best_warnings) – что дальше? Разумеется, нужно его _запустить на достаточно большом проекте_, иначе будет недостаточная отдача\. Тут есть простая [закономерность](https://pvs-studio.ru/ru/blog/posts/0158/) – чем _больше строк кода_, тем сложнее поддерживать его качество; а чем сложнее поддерживать его качество, тем _больше багов_\.

![0879_Best_Warnings_ru/image3.png](https://import.viva64.com/docx/blog/0879_Best_Warnings_ru/image3.png)

_Вот так может выглядеть первый запуск анализатора\.\.\._

Согласитесь, не очень\-то хочется оценивать возможности анализатора, просматривая вот это всё подряд\. Поэтому откройте дополнительный тулбар и нажмите на _Best Warnings_:

![0879_Best_Warnings_ru/image5.png](https://import.viva64.com/docx/blog/0879_Best_Warnings_ru/image5.png)

_Пример кнопки в плагине для Visual Studio_

После недолгой обработки вы получите список самых значимых проблем в коде по версии **IDF**\. Этот механизм разрабатывался также с целью продемонстрировать различные возможности анализатора, поэтому мы ограничили количество похожих срабатываний в выдаче\. Благодаря этому вы сможете посмотреть сразу на различные типы проблем в коде\. Это упростит дальнейшее изучение остальных срабатываний\.

_**Примечание\.**_** **_Не забывайте помечать звёздочкой самые интересные срабатывания\! Так вам будет легче их потом найти :\)_

## Что дальше?

Разумеется, не стоит игнорировать остальные предупреждения\. Режим _Analyzer Best Warnings_ призван помочь вам убедиться в пользе **PVS\-Studio** для вашего проекта и продемонстрировать возможности статического анализа\. Поэтому после изучения **10 самых значимых проблем** в коде по версии механизма **IDF** стоит вернуться и к другим предупреждениям\.

Для того чтобы это сделать, достаточно ещё раз нажать на кнопку _Best Warnings_:

![0879_Best_Warnings_ru/image7.png](https://import.viva64.com/docx/blog/0879_Best_Warnings_ru/image7.png)

_Пример кнопки в плагине для Visual Studio_

Теперь вы можете изучить все оставшиеся срабатывания\. На самом деле, это необязательный этап\. Вы можете, например, посмотреть только на уровень _High_:

![0879_Best_Warnings_ru/image9.png](https://import.viva64.com/docx/blog/0879_Best_Warnings_ru/image9.png)

_Фильтрация в плагине для Visual Studio_

Для того чтобы оставшиеся предупреждения не отвлекали от дальнейшего использования и в них не терялись новые, советую воспользоваться [механизмом подавления срабатываний](https://pvs-studio.ru/ru/docs/manual/0032/)\.

Для этого нажмите на кнопку _Suppress All Messages_:

![0879_Best_Warnings_ru/image11.png](https://import.viva64.com/docx/blog/0879_Best_Warnings_ru/image11.png)

_Подавление предупреждений в плагине для Visual Studio_

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

_**Примечание\.**_** **_Предупреждения не исчезают без следа\! Если вы отредактируете код рядом с подавленным срабатыванием, оно снова покажется вам\._

## Развитие IDF

Механизм умной фильтрации, конечно, будет развиваться и дальше\. _Analyzer Best Warnings_ – это первый функционал, основанный на его применении, но не последний :\)

У нас есть различные мысли и идеи о том, как его ещё можно использовать\. Например, добавить возможность сортировки всего отчёта\. Это было бы удобно, так как впоследствии можно скрывать наименее достоверные срабатывания по версии **IDF**\. Или же добавить возможность его точечной настройки для конкретных проектов\.\.\.

Одним словом, идей огромное количество\! Однако настоящей движущей силой изменений и перемен являются _не разработчики, а пользователи_\. Это один из самых главных наших принципов – _слушать желания аудитории_\.

Поэтому [пробуйте новый функционал](https://pvs-studio.ru/ru/pvs-studio/try-free/?promo=best_warnings) и [пишите нам](https://pvs-studio.ru/ru/about-feedback/) свои мысли и идеи\! Благодаря этому мы не только узнаем, насколько вам понравился новый механизм, но и найдём правильный вектор его развития\.

## Дополнительные ссылки

1. [Как внедрить статический анализатор кода в legacy проект и не демотивировать команду](https://pvs-studio.ru/ru/blog/posts/0743/)
1. [Статический анализ – от знакомства до интеграции](https://pvs-studio.ru/ru/blog/posts/0753/)