Я бы хотел получить комментарии от людей, которые использовали или оценивали Coverity для статического анализа Java-кода. Я знаю, что он популярен в мире C/C++, но стоит ли тратить деньги на анализ Java, или мне лучше с PMD, Findbugs и другими инструментами с открытым исходным кодом?Покрытие для статического анализа Java
ответ
Я пошлю его с несколько релевантным ответом. Я использовал Klocwork для кода Java и C. Klocwork является близким конкурентом Coverity ... по стоимости они примерно одинаковы (смотрите внимательно, Klocwork выглядит дешевле, пока вы на самом деле не купите то, что вам нужно), и по-особенному они сражаются взад и вперед.
Для C/C++ это здорово. Для Java .... ну, это помогло найти много утечек ресурсов (# $ @^#, когда разработчики Java, похоже, забывают, что такие ресурсы, как дескрипторы файлов, не собираются с мусором), но, похоже, критических "ошибок. Вероятно, это связано с тем, что сам язык помогает защитить некоторые из более простых, но трудно найти ошибки (переполнение массива, повреждение указателя и т. Д.).
Получите покрытие, чтобы запустить демоверсию, они более чем счастливы. Посмотрите, что они находят.
Если вы сегодня ничего не используете, я бы начал с Findbugs и PMD. Они просты в установке и использовании. Сосредоточьтесь на проверке и исправлении ошибок корректности с помощью Findbugs в первую очередь - они рекомендуют начинать с ошибок правильности высокой и средней серьезности, так как шашки имеют очень низкие ложные срабатывания, и вы получите хорошую отдачу от своего времени. Попросите разработчиков использовать PMD для очистки кода и плагин Findbugs в Eclipse для просмотра нового кода. Пошаговая работа заставит разработчиков разобраться и прибегнуть к полезности этих инструментов.
Java-чипы Coverity по-прежнему слабые по сравнению с их C/C++ шашками. Мы используем Findbugs, PMD, Coverity и Klocwork, потому что все они имеют разные сильные стороны, и мы параноики. Если вы не параноик, вы можете придерживаться инструментов с открытым исходным кодом и получить большую ценность. Или, если вам нужна проверка безопасности: тогда Klocwork или особенно Fortify должны выполнить более тщательную работу для вас.
Я добавлю ограниченные мне ответы на предыдущие ответы, несколько ограниченные Обложкой NDA, на которую я связан. Coverity Prevent имеет впечатляющий общественный послужной список для поиска ошибок в коде с открытым кодом C/C++, но их продукт Java намного новее. (Coverity имеет пресс-релиз моего бывшего работодателя, поэтому я могу сказать, что он помог найти и исправить множество ошибок в нашем коде на C/C++, больше, чем я нашел во всей своей предыдущей карьере в поисках ошибок.) FindBugs does впечатляющая работа над Java-кодом, и вы не можете победить цену. Но большой момент уже сделан: попробуйте оба из них на ваш действительный код перед покупкой. Нет никакой альтернативы реальности, и общепринятая мудрость в статическом анализе заключается в том, что на удивление мало накладывается то, что обнаруживают инструменты.
Как говорили другие, лучший способ решить - попробовать все эти инструменты.
Обложка недавно анонсировала размещенный продукт статического анализа как услугу, называемый Code Spotter(), в настоящее время в бета-версии. Он использует тот же механизм анализа, что и корпоративный продукт Coverity, но он обернут другим (упрощенным) пользовательским интерфейсом. Поскольку это размещенная услуга, с ней очень легко играть, чтобы получить представление о возможностях анализа Coverity.
На момент написания этой статьи Code Spotter является Java-only, но другие языки, поддерживающие Coverity, должны скоро появиться.
Есть ли у вас сравнение различных этих инструментов для Java? – 2010-12-08 07:50:31