﻿# IntelliJ IDEA, ReSharper, SonarLint и SonarQube находят те же ошибки, что и PVS\-Studio \- ну и зачем нам PVS\-Studio?

Иногда люди задают вопрос, который, на первый взгляд, про одно, а на самом деле про другое\. Как говорится, грамотно поставленный вопрос содержит половину ответа\.

На днях я вернулся с конференции [JPoint](https://jpoint.ru/), на которой впервые был представлен наш новый анализатор PVS\-Studio для Java\. Интерес к статическому анализу сильно растет в последние несколько лет, поэтому аудитория восприняла PVS\-Studio на ура\. Кроме положительных откликов, естественно, пришлось и поработать с возражениями\. Самое частое возражение на предложение попробовать PVS\-Studio звучит так: "Да ладно, зачем нам пробовать PVS\-Studio? Мы используем IntelliJ IDEA, ReSharper, SonarLint и SonarQube\. Вот мы запустили недавно PVS\-Studio, и он нашел ошибки, которые и так подсвечивает IntelliJ IDEA\!"

Я просто не могу не написать небольшую заметку\-ответ на этот комментарий\. Точнее, у меня даже два ответа на это возражение\. И да, я специально указал здесь ReSharper, так как к нашему анализатору для C\# такие вопросы тоже имеют место\. Что ж, с радостью отвечу\.

Во\-первых, мы НЕ делаем PVS\-Studio, копируя диагностики конкурентов\. Слепое копирование без понимания сути ведет в никуда\. Ценность статического анализа кода, ценность его диагностик не в том, где выдавать ошибку\. А в том, где ее НЕ выдавать\. На каждую из наших диагностик у нас есть 10, 20, а то и больше исключений, когда срабатывать не надо\. Копировать диагностики из других продуктов только по их описанию в документации \- это как пытаться построить такое же здание по одной фотографии\. Сильно фото Колизея поможет вам, если вдруг "боги заставят" вас построить такой же?

Поэтому мы никогда не копируем\. "Но ведь у вас есть одинаковые диагностики\!" \- скажете вы\. Конечно есть\. Идеи многих ошибок лежат на поверхности\. Это абсолютно очевидно\. Но часто диагностики с одинаковым описанием даже ведут себя по\-разному\.

Другими словами, если вы используете какой\-то из указанных в заголовке продуктов, то при запуске PVS\-Studio очень может быть, что вы найдете кучу НОВЫХ ошибок, которые не обнаруживались другими продуктами\. Опыт наших клиентов и опыт проверки открытых проектов это подтверждает\.

Во\-вторых, даже если вы используете IntelliJ IDEA, ReSharper и SonarLint/SonarQube, и они находят в вашем коде такие же ошибки, что и PVS\-Studio, то у меня для вас плохие новости\. Вы используете инструменты, которые находят ошибки, OK\. Но почему PVS\-Studio находит ошибки в вашем коде, которые, вроде как, находятся всеми этими инструментами? Почему при использовании инструментов, которые "точно так же, как и PVS\-Studio все найдут", ошибки не исправлены? Может быть эти инструменты ПОЗВОЛЯЮТ их не править?

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

И IntelliJ IDEA, и ReSharper и SonarLint с SonarQube очень хорошие инструменты\. Их делают высококвалифицированные команды\. И если вы их используете \- вы все делаете правильно\. Чем выше уровень инженерной культуры на проекте, тем лучше для бизнеса\.

Но если все эти инструменты "находят те же ошибки, что и PVS\-Studio", и ошибки все еще в коде, то вы что\-то делаете не так\. Внедрите в команде такую практику, как регулярное использование PVS\-Studio\. И тогда ошибки будут не только находиться, но и исправляться\. Внедрение PVS\-Studio ЗАСТАВИТ разработчиков исправлять ошибки\. А не только находить их\.