Coverity для статического анализа Java
Я хотел бы получить комментарии от людей, которые использовали или оценивали Coverity для статического анализа Java-кода. Я знаю, что он популярен в мире C/C++, но стоит ли тратить деньги на анализ Java или мне лучше с PMD, Findbugs и другими инструментами с открытым исходным кодом?
4 ответа
Если вы сегодня ничего не используете, я бы начал с Findbugs и PMD. Они просты в установке и использовании. Сначала сконцентрируйтесь на рассмотрении и исправлении ошибок правильности с помощью Findbugs - они рекомендуют начинать с ошибок правильности высокой и средней серьезности, поскольку у контролеров очень мало ложных срабатываний, и вы получите хороший возврат времени. Заставьте разработчиков использовать PMD для очистки кода и плагин Findbugs в Eclipse для просмотра нового кода. Работая постепенно, разработчики поймут и осознают полезность этих инструментов.
Java-контролеры Coverity по-прежнему слабы по сравнению с их C/C++. Мы используем Findbugs, PMD, Coverity и Klocwork, потому что все они имеют разные сильные стороны, и мы параноики. Если вы не параноик, вы можете использовать инструменты с открытым исходным кодом и получить большую ценность. Или, если вам нужна проверка безопасности: тогда Klocwork или особенно Fortify должны сделать для вас более тщательную работу.
Я скину несколько уместный ответ. Я использовал Klocwork для Java и C кода. Klocwork является близким конкурентом Coverity... по стоимости они примерно одинаковы (посмотрите внимательно, Klocwork выглядит дешевле, пока вы на самом деле не купите то, что вам нужно), а по функциям они сражаются взад и вперед.
Для C/C++ это здорово. Что касается Java… ну, это помогло обнаружить множество утечек ресурсов ( #$@^#. Java-разработчики, похоже, забыли, что такие ресурсы, как дескрипторы файлов, не являются сборщиком мусора), но, похоже, их не много " критические "ошибки. Вероятно, это связано с тем, что сам язык помогает защитить от некоторых основных ошибок, которые трудно найти (переполнение массива, повреждение указателя и т. Д.).
Получите Coverity, чтобы запустить демо, они более чем рады. Посмотрите, какие вещи они находят.
Я добавлю ограниченное "я" к предыдущим ответам, несколько ограниченное NDA Coverity, с которым я связан. Coverity Prevent имеет внушительный публичный послужной список для поиска ошибок в коде C/C++ с открытым исходным кодом, но их Java-продукт намного новее. (У Coverity есть пресс-релиз о моем бывшем работодателе, поэтому я могу сказать, что он помог найти и исправить множество ошибок в нашем коде C/C++, больше, чем я обнаружил за всю мою предыдущую карьеру в поиске ошибок.) FindBugs делает Впечатляющая работа над кодом Java, и вы не можете превзойти цену. Но главное уже сделано: опробуйте оба из них на своем реальном коде перед покупкой. Ничто не может заменить реальность, и общепринятая мудрость в статическом анализе заключается в том, что удивительно мало совпадений в том, что обнаруживают инструменты.
Как уже говорили другие, лучший способ решить - попробовать все эти инструменты.
Недавно компания Coverity объявила о размещении продукта статического анализа как услуги под названием Code Spotter ( https://code-spotter.com/), который в настоящее время находится в стадии бета-тестирования. Он использует тот же механизм анализа, что и корпоративный продукт Coverity, но заключен в другой (упрощенный) пользовательский интерфейс. Поскольку это размещенный сервис, с ним очень легко поиграть, чтобы получить представление о возможностях анализа Coverity.
На момент написания этой статьи Code Spotter был доступен только для Java, но скоро появятся другие языки с поддержкой Coverity.