Проблема
Это довольно распространенная проблема, я бы хотел подумать. Добавление нового кода приводит к регрессу - существующие тестовые примеры устаревают. Зависимости внутри кода означают, что даже если вы знаете, как исправить эту конкретную регрессию, косвенная регрессия может иметь место еще в n местах в обоих направлениях - афферентном и эфферентном.
Требование
У меня есть магазин с SVN, Maven + Nexus, Sonar, Jenkins и JIRA, QC, QTP. В целом, хорошая среда CI.
С каждой новой сборкой у меня будут новые случаи регресса. Я хочу найти зависимости пакетов Java в обоих направлениях и правильно обновить тестовые примеры, чтобы охватить все типы регрессии - прямые и косвенные. Это большая проблема, поскольку мой охват модульными тестами даже не приближается к 50%, а автоматизация интеграционных тестов не успевает за развитием.
Мои параметры
- SONAR
- Google CodePRo
- JArchitect
- Jtest (был обсужден с поставщиком Parasoft. У них нет для этого инструмента)
- Используйте существующую среду, скажем, с подключаемым модулем Atlassian.
- Kalisitck (демонстрационная версия поставщика - хороший инструмент - требует обучения и затрат)
- Coverity (например, Kalistick - время обучения и сложная установка. Очень дорогая лицензия.
- Любой другой с открытым исходным кодом / платный?
JArchitect, SONAR и CodePro предоставят вам простую матрицу вроде this или this. Что удовлетворяет половину моих требований, сообщая мне, какие классы user и used by затронуты. Я хочу сделать еще один шаг и попросить инструмент сообщить мне, какие соответствующие тестовые примеры затронуты, и нужно ли мне обновить и / или выполнить их, чтобы покрыть риски регресса.
Kalistick, Coverity и, возможно, другие могут делать то, что я хочу - их сложно устанавливать и настраивать, они медленно растут вместе с вашей системой, поэтому сразу не продуктивны, требуют затрат и требуют обучения.
Короткий вопрос
Какие из перечисленных выше инструментов использовать в моей настройке с учетом всех факторов, таких как установка, время обучения, стоимость, доступность или любой другой параметр.
Я уже читал раздел часто задаваемых вопросов по static-analysis., несколько потоков вроде рекомендаций по инструменту статического анализа для Java?, https://stackoverflow.com/questions/3716203/automatic-code-quality-and-architecture-quality-static-code-analysis и Чем привлекают метрики кода? и многие связанные метрики, но они не отвечают на мой конкретный вопрос.