Как получить метрики зависимостей из исходного кода Java? - PullRequest
3 голосов
/ 03 мая 2010

Для выполнения задания мы должны извлечь некоторые метрики программного обеспечения из проекта Hibernate. Мы должны извлечь метрики афферентной и эфферентной связи (разветвление зависимостей, разветвление) из каждой ревизии каждого пакета в Hibernate. Были предоставлены некоторые инструменты, которые могут извлечь эти метрики, такие как ckjm и JDepend . Другие инструменты, которые я проверял, были Сонар , javancss и AOP . Есть также плагин Metrics Eclipse, который я тоже не получил.

Насколько я могу судить, эти инструменты имеют общее то, что все они работают с байт-кодом (файлы * .class). Это проблема, потому что мне нужно собрать каждую ревизию из исходного кода, чтобы запустить, скажем, JDepend. Старые версии не будут создаваться, потому что мой стек разработки слишком свежий. Я хотел бы провести такой анализ файлов source , чтобы мне не приходилось создавать каждую ревизию. Это возможно? Или есть веская причина, почему все эти инструменты работают только с байт-кодом?

Ответы [ 5 ]

1 голос
/ 03 мая 2010

Попробуйте это: http://sourceforge.net/projects/hibernate/files/hibernate3/

Вы можете скачать файлы Jar для многочисленных старых ревизий здесь.

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

0 голосов
/ 23 апреля 2013

Выезд Сонар . Это автономный веб-сервис с открытым исходным кодом, в который вы «отправляете» свой код, и он создает прекрасные HTML-отчеты по всем видам метрик кода. Он также хранит историю сборок. И самое главное, вам не нужно изменять свои сборки или poms!

Для этого тоже есть мавенская цель: sonar:sonar. Дженкинс (ранее Хадсон) имеет плагин для него, поэтому совершенно безболезненно, если вы используете его для своего КИ.

Проверьте это - вы не пожалеете!

0 голосов
/ 31 октября 2011

Многие инструменты работают с байт-кодами файлов классов, потому что (как указывали другие ответы) гораздо проще написать анализатор файлов классов, чем фактически анализировать полную Java.

Наш инструментарий реинжиниринга программного обеспечения DMS и его интерфейс Java могут анализировать и разрешать имена Java через 1.6. (Он анализирует 1.7, но не решает некоторые очень темные углы, которые будут реализованы очень скоро). Это обеспечивает полный AST и таблицы символов. Механизм DMS позволит вам посетить / проверить AST и таблицы символов.

DMS будет обрабатывать много исходных файлов одновременно, поэтому вы можете вычислить ваши метрики для нескольких файлов с этими данными.

0 голосов
/ 30 октября 2011

Вы можете попробовать пробную версию JavaDepend , она будет достаточна для ваших нужд, она рассчитывает эфферентную связь, афферентную связь и многие другие полезные метрики.

0 голосов
/ 08 мая 2010

Мы обнаружили, что cccc способен собирать метрики по исходному коду (LOC, сложность McCabe, CK и HK). Возможно, он работает в простом проекте, но запуск этого кода во всем коде Hibernate привел к большому количеству ошибок разбора. Более того, он останавливается с ошибкой сегментации в конце, оставляя нам неполный отчет.

В итоге мы прибегли к написанию собственного сценария, который обрабатывает файлы для сбора необходимой информации. Он не защищен от воды, поскольку на самом деле он не анализирует Java, а просто ищет определенные шаблоны, но на данный момент этого достаточно.

...