Coverity для статического анализа Java - PullRequest
17 голосов
/ 06 октября 2008

Я хотел бы получить комментарии от людей, которые использовали или оценивали Coverity для статического анализа Java-кода. Я знаю, что он популярен в мире C / C ++, но стоит ли тратить деньги на анализ Java или мне лучше использовать PMD, Findbugs и другие инструменты с открытым исходным кодом?

Ответы [ 4 ]

15 голосов
/ 01 ноября 2008

Если вы сегодня ничего не используете, я бы начал с Findbugs и PMD. Они просты в установке и использовании. Сначала сконцентрируйтесь на рассмотрении и исправлении ошибок правильности с помощью Findbugs - они рекомендуют начинать с ошибок правильности высокой и средней серьезности, поскольку у контролеров очень мало ложных срабатываний, и вы получите хороший возврат времени. Заставьте разработчиков использовать PMD для очистки кода и плагин Findbugs в Eclipse для просмотра нового кода. Работая постепенно, разработчики поймут и осознают полезность этих инструментов.

Java-контролеры Coverity по-прежнему слабы по сравнению с их C / C ++-контролерами. Мы используем Findbugs, PMD, Coverity и Klocwork, потому что все они имеют разные сильные стороны, и мы параноики. Если вы не параноик, вы можете использовать инструменты с открытым исходным кодом и получить большую ценность. Или, если вам нужна проверка безопасности: тогда Klocwork или особенно Fortify должны выполнить более тщательную работу за вас.

4 голосов
/ 07 октября 2008

Я скину несколько уместный ответ. Я использовал Klocwork для Java и C кода. Klocwork является близким конкурентом Coverity ... с точки зрения затрат они примерно одинаковы (посмотрите внимательно, Klocwork выглядит дешевле, пока вы на самом деле не купите то, что вам нужно), а с точки зрения возможностей они сражаются взад и вперед.

Для C / C ++ это здорово. Что касается Java… ну, это помогло обнаружить множество утечек ресурсов (# $ @ ^ #. Java-разработчики, похоже, забыли, что такие ресурсы, как дескрипторы файлов, не являются сборщиком мусора), но, похоже, их не много » критические "ошибки. Возможно, это связано с тем, что сам язык помогает защитить от некоторых более простых, но трудно обнаруживаемых ошибок (переполнение массива, повреждение указателя и т. Д.).

Подключите Coverity для запуска демо, они более чем счастливы. Посмотрите, что они находят.

3 голосов
/ 30 марта 2009

Я добавлю ограниченное «я» к предыдущим ответам, несколько ограниченное NDA Coverity, с которым я связан. Coverity Prevent имеет впечатляющий публичный послужной список для поиска ошибок в коде C / C ++ с открытым исходным кодом, но их Java-продукт намного новее. (У Coverity есть пресс-релиз о моем бывшем работодателе, поэтому я могу сказать, что он помог найти и исправить множество ошибок в нашем коде на C / C ++, больше, чем я видел за всю мою предыдущую карьеру в поиске ошибок.) Впечатляющая работа над кодом Java, и вы не можете превзойти цену. Но главное уже сделано: опробуйте оба из них на вашем реальном коде перед покупкой. Ничто не может заменить реальность, и общепринятая мудрость в статическом анализе заключается в том, что в обнаружении инструментов на удивление мало совпадений.

0 голосов
/ 20 ноября 2014

Как уже говорили другие, лучший способ решить - попробовать все эти инструменты.

Компания Coverity недавно анонсировала размещенный на рынке продукт для статического анализа как службы Code Spotter (https://code -spotter.com / ), который в настоящее время находится в стадии бета-тестирования. Он использует тот же механизм анализа, что и корпоративный продукт Coverity, но заключен в другой (упрощенный) пользовательский интерфейс. Поскольку это размещенный сервис, с ним очень легко поиграть, чтобы получить представление о возможностях анализа Coverity.

На момент написания этой статьи Code Spotter был доступен только для Java, но скоро появятся другие языки с поддержкой Coverity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...