Javaコードベース用のこのツールは、最初にリファクタリングするものを特定するのに役立ちます。
Gitリポジトリをスキャンして実行します。
サイクル分析は、現時点ではクラスフィールドタイプとメソッドの署名タイプに基づいて実行されます(詳細があります!)。
レポートで生成されたグラフは、これに似ています。 
JGITの脆弱性CVE-2023-4759に対処するには、Java 11を要求するための変更が必要です
Java 21コードベース分析がサポートされています!
プロジェクトのルートから次のコマンドを実行します(ソースコードを構築する必要はありません):
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport target/site/refactor-first-report.htmlでレポートを表示します
これにより、GitHubアクションステップの出力として簡素化されたHTMLレポート(グラフまたは画像なし)が生成されます
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プラグインを作成し、将来的には(おそらく)非伝統的なプロジェクトをサポートしたいと思いますが、その間に.GITディレクトリと同じディレクトリにダミーPOMファイルを作成できます。
< 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:htmlReporttarget/site/refactor-first-report.htmlでレポートを表示します
プラグインの実行が完了したら(大/古いコードベースにしばらく時間がかかる場合があります)、プロジェクトのルートでファイルターゲット/サイト/Refactor-first-report.htmlを開きます。上記のグラフに似たグラフと、それらをリファクタリングする必要がある推奨順序で神の階級をリストするテーブルが含まれます。グラフの左上にあるクラスは、チームの生産性に最大のプラスの影響を与える一方で、リファクタリングが最も簡単です。
高度に結合されたクラスが検出された場合、高度に結合されたクラスをリストするグラフとテーブルが生成されます。
製品所有者と協力して、特定された技術的債務を優先します。それは、チームのporductivityを遅くしている隠された負の値として説明するのに役立つかもしれません。
Intellij Ultimateがある場合は、メソッドリファレンス図プラグインをインストールして、特定されたGodクラスと高度に結合されたクラスをどのようにリファクタリングできるかを判断できます。
このプラグインは、典型的なMavenプロジェクトレイアウトを備えた単一モジュールとマルチモジュールMavenプロジェクトの両方で機能します。
このツールは、Nico 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の変化によるものです。