Этот инструмент для кодовых баз Java поможет вам в первую очередь определить, что вы должны рефактор:
Он сканирует ваш репозиторий GIT и работает:
Анализ цикла выполняется на основе типов поля классов и типов подписей метода в настоящее время (подробнее!).
Графики, полученные в отчете, будут выглядеть похожими на этот: 
Изменение в требуемой Java 11 необходимо для устранения уязвимости CVE-2023-4759 в JGIT
Анализ кодовой базы Java 21 поддерживается!
Запустите следующую команду из корня вашего проекта (исходный код не нужно построить):
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport Посмотреть отчет по адресу target/site/refactor-first-report.html
Это будет генерировать упрощенный отчет HTML (без графиков или изображений) в качестве вывода шага действия GitHub
mvn -B clean test
org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:simpleHtmlReport
&& echo " $( cat target/site/refactor-first-report.html ) " >> $GITHUB_STEP_SUMMARYДобавьте следующее в свой проект в разделе сборки. Showdetails покажут метрики и рейтинги класса Бога в сгенерированной таблице.
< build >
< plugins >
...
< plugin >
< groupId >org.hjug.refactorfirst.plugin</ groupId >
< artifactId >refactor-first-maven-plugin</ artifactId >
< version >0.6.1</ version >
<!-- optional -->
< configuration >
< showDetails >false</ showDetails >
</ configuration >
</ plugin >
...
</ plugins >
</ build > Добавьте следующее в свой проект в разделе «Отчеты».
Отчет RefactorFirst будет отображаться в отчете сайта при запуске mvn site
< reporting >
< plugins >
...
< plugin >
< groupId >org.hjug.refactorfirst.plugin</ groupId >
< artifactId >refactor-first-maven-plugin</ artifactId >
< version >0.6.1</ version >
</ plugin >
...
</ plugins >
</ reporting >Если вы видите ошибку, похожую на
Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.3:site failed: A required class was missing while executing org.apache.maven.plugins:maven-site-plugin:3.3:site: org/apache/maven/doxia/siterenderer/DocumentContent
Вам нужно будет добавить следующее в свой pom.xml:
< build >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-site-plugin</ artifactId >
< version >3.12.1</ version >
</ plugin >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-project-info-reports-plugin</ artifactId >
< version >3.4.5</ version >
</ plugin >
</ plugins >
</ build >Я хотел бы создать плагин Gradle и (возможно) поддерживать нетрадиционные проекты в будущем, но в то же время вы можете создать фиктивный POM-файл в том же каталоге, что и ваш каталог .git:
< project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance "
xsi : schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " >
< modelVersion >4.0.0</ modelVersion >
< groupId >com.mycompany.app</ groupId >
< artifactId >my-app</ artifactId >
< version >1.0-SNAPSHOT</ version >
</ project >а затем (при условии, что Maven установлен
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport Посмотреть отчет по адресу target/site/refactor-first-report.html
После того, как плагин завершит выполнение (он может занять некоторое время для большой/старой кодовой базы), откройте целевой файл/сайт/рефактор-first-report.html в корне проекта. Он будет содержать график, аналогичный вышеуказанному, и таблицу, в которой перечислены классы Бога в рекомендуемом порядке, что они должны быть рефакторированы. Занятия в левом верхнем графике - это проще всего рефактор, а также оказывают наибольшее положительное влияние на производительность команды.
Если будут обнаружены высоко связанные классы, будут сгенерированы графические и таблицы, в которых будут сгенерированы высокие классы.
Работайте с владельцем вашего продукта, чтобы расставить приоритеты в техническом долге, который был выявлен. Это может помочь объяснить это как скрытую негативную ценность, которая замедляет командную фарктивность.
Если у вас есть Ultimate, вы можете установить плагин справочной диаграммы метода, чтобы помочь вам определить, как могут быть рефакторированы идентифицированные классы Бога и высокопоставленные классы.
Этот плагин будет работать как для отдельных модульных, так и для многомодульных проектов Maven, которые имеют типичную макет проекта Maven.
Этот инструмент основан на бумаге , приоритетных возможностях инвестиций в инвестицию в области дизайна Нико Zazworka, Carolyn Seaman и Forrest Shull. Презентация, основанная на статье, доступна по адресу https://resources.sei.cmu.edu/asset_files/presentation/2011_017_001_516911.pdf
Есть еще многое, что еще предстоит сделать. Ваши отзывы и сотрудничество будут высоко оценены в форме запросов функций, подачи ошибок и PRS.
Если вы найдете этот плагин полезным, пожалуйста, смотрите в этот репозиторий и поделитесь со своими друзьями и коллегами и в социальных сетях.
Если вы являетесь пользователем версии 0.1.0 или 0.1.1, вы можете заметить, что список классов Бога, найденных плагином, изменился. Это связано с изменениями в PMD.