Инструмент анализа/метрики Java-кода

Я ищу бесплатный инструмент анализа/метрики кода Java, который я могу использовать для просмотра зависимостей классов, времени выполнения методов и т. д. и, возможно, для распечатки диаграммы, которая их показывает. В настоящее время я использую задачу jdepend в ANT для достижения этой цели, но я думаю, что для такого рода вещей должен быть лучший инструмент. Я также предпочел бы, чтобы он был интегрирован с Netbeans, поскольку я не хотел бы переносить все свои проекты в Eclipse для выполнения задачи анализа. Я пытался поиграть с версией Visual Paradigm для сообщества, но мне очень быстро надоело, когда она не предлагала синхронизацию кода в версии для сообщества. Хотя я могу попробовать еще раз, если это действительно так. Я также попробовал BOUML, но, похоже, это скорее инструмент проектирования UML, чем существующий анализатор кода. Итак, мой вопрос: что вы, ребята, используете для анализа кода Java? Спасибо!

РЕДАКТИРОВАТЬ: Например, JDepend измеряет несколько показателей и может нарисовать небольшой симпатичный график зависимостей, но у него точно нет пользовательского интерфейса или чего-то еще. Думаю, я ищу инструмент, который может отображать все мои классы и их зависимости друг от друга (jdepend делает пакеты только AFAIK), а также методы, которые вызываются между классами, и предоставляет метрическое число «насколько хорошо структура кода". Прошу прощения, если вопрос расплывчатый, я просто ищу разные варианты и у меня нет большого опыта работы с инструментами метрик кода...


person SuperTron    schedule 01.12.2011    source источник
comment
что вы подразумеваете под анализом кода? вы можете использовать инструмент покрытия кода, такой как emma или cobertura, чтобы узнать, какие части кода вызываются и сколько раз, вы можете использовать ucdetector для поиска неиспользуемого кода, checkstyle/pmd для статического анализа кода или профайлер, чтобы определить, какие методы вызывают какие и сколько раз...   -  person aishwarya    schedule 01.12.2011
comment
Анализировать как? Время выполнения является профилирующим. Зависимости — это совсем другое. Тестовое покрытие — это другое. Еще одна цикломатическая сложность. И т.д... Как говорит Виктор, Sonar может сочетать в себе множество из них, но он выходит за рамки простого инструмента анализа.   -  person Dave Newton    schedule 01.12.2011


Ответы (2)


Как отметил @Victor, Sonar — очень хороший инструмент для статического анализа кода. Он создает графики, диаграммы и, как правило, позволяет вам анализировать код Java несколькими способами.

Однако он работает как сервер, для которого могут потребоваться привилегии на вашем компьютере/сети, которых у вас может не быть. Я сам им пользуюсь и рекомендую, но это не всегда практично. Итак, давайте взглянем на некоторые инструменты, которые он использует под капотом.

Во-первых, это FindBugs. Как следует из названия, это помогает вам находить ошибки в исходном коде Java.

Далее следует PMD. Это помогает найти ошибки разными способами от FindBugs.

В-третьих, это CheckStyle. Это помогает убедиться, что ваш код соответствует определенным рекомендациям по стилю.

Наконец, есть Cobertura, которая анализирует ваши байт-коды Java и анализирует, какие строки исходного кода используются вашими модульными тестами (вы есть модульные тесты, верно?)

Это не исчерпывающий список инструментов, которые использует Sonar, но он охватывает то, что кажется наиболее важным. Внутри Sonar все это на 100% настраивается. За пределами Sonar они по-прежнему настраиваются, но вам больше нравится XML.

person Mike    schedule 01.12.2011

Sonar. Хотя лично я им никогда не пользовался, поэтому не могу ответить на вопросы о деталях. Однако я знаю, что наш инструмент построения conitnuos интегрирован с ним, чтобы делать красивые картинки :)

person Victor Sorokin    schedule 01.12.2011