Jpeek является статическим коллекционером метрик кода Java.
Мотивация : Например, сплоченность класса считается одним из наиболее важных объекта-ориентированных атрибутов программного обеспечения. До сих пор изобретено более 30 различных показателей сплоченности, но почти ни у кого из них нет калькуляторов. Ситуация с другими показателями очень похожа. Мы хотим создать такой инструмент, который позволят более или менее формально анализировать качество кода (с сотнями метрик). Затем мы применим этот анализ в различных библиотеках Java с намерением доказать, что идеи из серии книг Elegant Objects имеют смысл.
Загрузите последний файл jar-with-dependencies.jar отсюда и затем:
java -jar jpeek-jar-with-dependencies.jar --sources . --target ./jpeek Jpeek будет анализировать файлы Java в текущем каталоге. Отчеты XML будут генерироваться в каталоге ./jpeek . Наслаждаться.
| Вариант | Описание |
|---|---|
-s, --sources <path> | Необходимый. Путь к каталогу с файлами класса |
-t, --target <path> | Необходимый. Путь к каталогу, где будут получены отчеты |
--include-ctors | Включите конструкторы во все формулы |
--include-static-methods | Включите статические методы во все формулы |
--include-private-methods | Включите частные методы во все формулы |
--metrics <metrics> | Список метрик, разделенный запятыми, включить (по умолчанию: "LCOM5,NHD,MMAC,SCOM,CAMC" ) |
--overwrite | Перезаписать целевой каталог, если он существует, или выйти с ошибкой |
--quiet | Выключите журнал |
--help | Отобразить сообщение справки |
Вы также можете развернуть его в качестве веб -сервиса на свою собственную платформу. Просто составьте его с mvn clean package --settings settings.xml , а затем запустите, как предполагает Procfile . Вам нужно будет иметь settings.xml со следующими данными:
< settings >
< profiles >
< profile >
< id >jpeek-heroku</ id >
< activation >
< activeByDefault >true</ activeByDefault >
</ activation >
< properties >
< sentry .dsn>https://...</ sentry .dsn>
< dynamo .key>AKIAI..........LNN6A</ dynamo .key>
< dynamo .secret>6560KMv5+8Ti....................Qdwob63Z</ dynamo .secret>
</ properties >
</ profile >
</ profiles >
</ settings > Вам также понадобятся эти таблицы в DynamoDB (все индексы должны доставлять ALL атрибуты):
jpeek-mistakes:
metric (HASH/String)
version (RANGE/String)
indexes:
mistakes (GSI):
version (HASH/String),
avg (RANGE/Number)
jpeek-results:
artifact (HASH/String)
indexes:
ranks (GSI):
version (HASH/String)
rank (RANGE/Number)
scores (GSI):
version (HASH/String)
score (RANGE/Number)
recent (GSI):
good (HASH/String)
added (RANGE/Number)
Эти документы обеспечивают довольно хорошее резюме показателей сплоченности:
[ izadkhah17 ] Хабиб Изадхах и др.
Метрики сплоченности класса для разработки программного обеспечения: критический обзор ,
Журнал компьютерной науки Молдова, том 25, № 1 (73), 2017, pdf.
[ badri08 ] Линда Бадри и др.,
Пересмотр сплоченности класса: эмпирическое исследование нескольких систем ,
Journal of Object Technology, Vol.7, № 6, 2008, PDF.
[ chidamber94 ] Отсутствие сплоченности в методах ( LCOM ).
Shyam Chidamber et al.,
Метрический набор для объектно -ориентированного дизайна ,
IEEE Transactions on Software Engineering, Vol.20, № 6, 1994, PDF.
[ bieman95 ] Плавное сплоченность класса ( TCC ) и свободная сплоченность класса ( LCC ).
Джеймс М. Биман и др.,
Сплоченность и повторное использование в объектно-ориентированной системе ,
Кафедра компьютерных наук, Университет штата Колорадо, 1995, PDF.
[ hitz95 ] Отсутствие сплоченности в методах 4 ( LCOM4 ).
Мартин Хитц и др.,
Измерение связи и сплоченности в объектно-ориентированных системах ,
Институт прикладных компьютерных наук и системных анализов, Венский университет, 1995, PDF.
[ sellers96 ] Отсутствие сплоченности в методах 2-3 ( LCOM 2, 3 и 5 ).
B. Henderson-Sellers et al.,
Связь и сплоченность (к действительному набору метрик для объектно-ориентированного анализа и дизайна) ,
Объектно -ориентированные системы 3, 1996, pdf.
[ bansiya99 ] Сплоченность между методами классов ( CAMC ).
Ягдиш Бансия и др.,
Показатель сплоченности класса для объектно-ориентированных конструкций ,
Журнал объектно-ориентированного программирования, вып. 11, нет. 8, 1999, pdf.
[ etzkorn00 ] логическая родственность методов ( LORM ).
Л. Эцкорн и Х. Делугач,
На пути семантических метрик для объектно-ориентированного дизайна ,
Технология объектно-ориентированных языков и систем, 2000. Инструменты 34. Труды. 34 -я Международная конференция. IEEE, 2000, с. 71–80, pdf
[ wasiq01 ] Метрика подключения класса ( CCM ).
М. Васик
Измерение сплоченности класса в объектно-ориентированных системах ,
Мастер -диссертация в Университете нефти и минералов короля Фахд, 2001, PDF.
[ aman04 ] Оптимистическая сплоченность класса ( OCC ) и пессимистическая сплоченность класса ( PCC ).
Хирохиса Аман и др.,
Предложение о показателях сплоченности класса с использованием размеров сплоченных частей ,
Прокурор Пятой совместной конференции по разработке программного обеспечения на основе знаний, 2002, PDF.
[ marcus05 ] Концептуальная сплоченность классов ( C3 ).
А. Маркус и Д. Похиваник,
Концептуальная сплоченность классов ,
21-я Международная конференция IEEE по обслуживанию программного обеспечения (ICSM'05), Будапешт, Венгрия, 2005, с. 133-142, pdf
[ counsell06 ] Нормализованное расстояние Хэмминга ( NHD ).
Стив Конселл и др.,
Интерпретация и полезность трех показателей сплоченности для объектно-ориентированного дизайна ,
ACM Tosem, апрель 2006 г., pdf.
[ fernandez06 ] Чувствительный показатель сплоченности класса ( SCOM ).
Луис Фернандес и др.,
[A] Новая метрика [...] дает значимые значения [...] более чувствителен, чем ранее сообщалось ,
Международный журнал «Информационные теории и приложения», Том 13, 2006, PDF.
[ dallal07 ] Метод-Метод через сплоченность атрибутов ( MMAC ).
Джехад Аль Даллал,
Показатель сплоченности на основе дизайна для объектно-ориентированных классов ,
Всемирная академия науки, инженерии и технологий Международный журнал компьютерного и информационного инженерия Vol: 1, № 10, 2007, PDF.
[ liu09 ] максимальная взвешенная энтропия ( MWE ).
Y. Liu, D. Poshyvanyk, R. Ferenc, T. gyim´othy и N. Chrisochoides,
Моделирование сплоченности класса как смеси скрытых тем ,
Обслуживание программного обеспечения, 2009. ICSM 2009. Международная конференция IEEE. IEEE, 2009, с. 233–242, pdf
[ dallal11 ] Переходное отсутствие сплоченности в методах ( TLCO ).
Джехад Аль Даллал,
На основе транзитив, ориентированной на объектно-ориентированную недостаток, метрика ,
Кафедра информационных наук, Кувейтский университет, 2011, PDF.
Во -первых, Skeleton анализирует Java Bytecode с использованием Javaassit и ASM, чтобы создать skeleton.xml . Этот XML -документ содержит информацию о каждом классе, которая необходима для расчетов метрик. Например, этот простой класс Java:
class Book {
private int id ;
int getId () {
return this . id ;
}
} Будет выглядеть так в skeleton.xml :
< class id = ' Book ' >
< attributes >
< attribute public = ' false ' static = ' false ' type = ' I ' >id</ attribute >
</ attributes >
< methods >
< method abstract = ' false ' ctor = ' true ' desc = ' ()I ' name = ' getId ' public = ' true ' static = ' false ' >
< return >I</ return >
< args />
</ method >
</ methods >
</ class > Затем у нас есть коллекция таблиц стилей XSL, по одному на каждую метрику. Например, LCOM.xsl преобразует skeleton.xml в LCOM.xml , что может выглядеть так:
< metric >
< title >MMAC</ title >
< app >
< class id = ' InstantiatorProvider ' value = ' 1 ' />
< class id = ' InstantationException ' value = ' 0 ' />
< class id = ' AnswersValidator ' value = ' 0.0583 ' />
< class id = ' ClassNode ' value = ' 0.25 ' />
[... skipped ...]
</ app >
</ metric >Таким образом, все вычисления происходят в файлах XSLT. Мы решили реализовать это таким образом после менее успешной попытки сделать все это на Java. Кажется, что XSL гораздо больше подходит для манипуляций с данными, чем Java.
Мы разрабатываем плагин JPeek для Maven, см. Project Jpeek Maven Plagin.
final константы. Например, все метрики LCO и COM затронуты. Просто вилка, внесите изменения, запустите mvn clean install -Pqulice и отправьте запрос на тягу; Прочитайте это, если потеряно.
Не стесняйтесь добавлять свое имя в этот список в вашем следующем запросе на привлечение.