Подтвердить что ты не робот

Покрытие для статического анализа Java

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Для C/С++ это здорово. Для Java.... ну, это помогло найти много утечек ресурсов (# [email protected]^ #, когда разработчики Java, похоже, забывают, что такие ресурсы, как дескрипторы файлов, не собираются с мусором), но, похоже, критических "ошибок. Вероятно, это связано с тем, что сам язык помогает защитить некоторые из более простых, но трудно найти ошибки (переполнение массива, повреждение указателя и т.д.).

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

Ответ 3

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

Ответ 4

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

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

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