開発者に同じ Java コード フォーマット ルールの使用を強制する方法を探しています。要件は次のとおりです。
- Gradle統合
コードが正しくフォーマットされているかどうかを確認するタスク。これは、誤ったフォーマットのコードが送信された場合にビルドを失敗させるために CI で使用されます。
誤ってフォーマットされたコードを修正するタスク(あれば便利)
- IntelliJ 統合
- 誤ってフォーマットされたコードは、IDE 内の「コードの再フォーマット」アクションで修正できます。
- IDEによって生成されるコード(例:ゲッター/セッター生成)はルールに準拠している
- サポートするオープンJDK/Oracle Java フォーマット規則
現在使用中汚れなし以下の構成で
spotless {
java {
toggleOffOn()
eclipse().configFile("${project.rootDir}/tools/eclipse-java-formatter.xml")
indentWithSpaces()
removeUnusedImports()
}
}
IntelliJ統合のために、Eclipse コードフォーマッタプラグインそして設定したSpotless と同じルールを使用します。
このアプローチは、2.2 を除く上記の要件をすべて満たしています。つまり、IntelliJ によって生成されたコードは、フォーマット ルールに準拠する前に再フォーマットする必要があります。さらに問題となるのは、コードが再フォーマットされると、インポートが任意に並べ替えられるように見えることです。これにより、多くの誤った変更が生成され、プル リクエストのレビューが困難になります。
これらの欠点のない別のアプローチ (例: CheckStyle) はありますか?
ベストアンサー1
あなたはGoogle Java 形式、これには前述のIDE用のプラグインがあります(IntelliJ IDEA、日食)は、Maven、Gradle、SBTなどのツールとの統合を提供し、フォーマッタを次のように実行する手段を提供します。コミット前フックまたはGithubアクションでコードをGithubにプッシュするとき。
READMEでは、IntelliJ IDEAでのインポート問題と修正方法についても言及されており、例えば、どのように対処するかなど、より多くの洞察が提供されています。スポットレス Gradle プラグイン、使用する場合Maven Spotless プラグイン、またはGithubアクション。
特定のケースでは、ツールがGoogle Java スタイル ガイド、 どれのOracle Javaマガジンで説明されているように、Oracle Javaチームによって賞賛され推奨されています。. また、AOSP コードスタイル。
以下は汚れのないインポート順序を考慮した Gradle 構成:
spotless {
java {
importOrder() // standard import order
importOrder('java', 'javax', 'com.acme', '') // or importOrderFile
// You probably want an empty string at the end - all of the
// imports you didn't specify explicitly will go there.
removeUnusedImports()
googleJavaFormat() // has its own section below
eclipse() // has its own section below
prettier() // has its own section below
clangFormat() // has its own section below
licenseHeader '/* (C) $YEAR */' // or licenseHeaderFile
}
}