Привет, друзья. Думаю, все, кто читает Хабр, знают статьи с Единорогом с радугой. Собственно, это отличительный знак постов из блога PVS-Studio. Сегодня, прочитав очередную заметку (в этот раз про поиск багов в калькуляторе Windows), я решил и сам испробовать данный статический анализатор.
Собственно, про компанию PVS-Studio все, наверное, и так всё знают. Ведь Евгений (CEO и совладелец) и Андрей (CTO и совладелец) рассказывали об этом уже миллион раз. Например, один из последних классных рассказов случился в 230-м выпуске подкаста devzen — https://devzen.ru/episode-0230/.
Ещё мы все знаем, с чего начинался этот анализатор кода — с языка С++. Именно там PVS-Studio стал одним из лидеров, захватив нишу. Первенство постоянно доказываетя в статьях на хабре, где каждый раз находятся крутые баги в известных проектах, например, в Chrome.
Евгений и Андрей решили пойти дальше, пробуя другие языки кроме С++. На самом деле, если почитать хабр трёх летней давности, то там Андрей говорил, что на Java они не смотрят. Но, видимо, продавать статический анализатор так тяжало, что пришлось изменить этому принципу.
Как в кратце работает этот аназизатор? Согласно открым данным, из С++ реализации анализатора были выделены в отдельный проект все правила анализа. Таким образом, продукт состоит из двух больших модулей — из парсера, который строит некоторое AST, и движка правил, который содержит все эвристики, правила, исключения, и вот это всё. Собственно, ребята дописали парсер для Java, и таким образом появился анализатор и для этого языка.
Исходя из архитектуры PVS-Studio, можно ожидать, что перед нами довольно зрелый Java-анализатор. Ведь он базируется на давно зарекомендовавшем себя С++ анализаторе кода. К сожалению, пока это не так (по крайне мере, в моём случае), и об этом далее.
Начнем с интеграции PVS-Studio в Java-проект. Тут, на самом деле, всё очень круто. Вы просто читаете инструкцию, и выполняете шаги для Maven/Gradle. У меня в тестируемом проекте gradle, и всё завелось спустя 20 секунд. Инструкция — https://www.viva64.com/ru/m/0044/.
Коротко о том, где взять ключ лицензии. Путей несколько:
В общем, я получил свой триальный ключ по почте и запустил анализатор. В моем коде нашлось всего 3 типа ошибок, чему я супер сильно удивился (обычно, всякие findbugs, pmd, sonarqube, Checkstyle находят миллионы ошибок, и потом приходится часами чистить false positive ошибки).
В общем, выглядит как-то не очень. Ни одного реального бага. Хотя, надо сказать, что я скормил в PVS-Studio небольшой проект. Но, anyway, хотелось бы найти хотя бы один баг.
Итоги. Пока я не купился на этот инструмент для языка Java (в Плюсах — всё круто). Будем смотреть, что произойдет с этим ститическим анализатором в будущем. Пока что, тратить деньги на него не собираюсь.
Категории: Программирование