一貫したJavaコード形式を強制するにはどうすればよいでしょうか? 質問する

一貫したJavaコード形式を強制するにはどうすればよいでしょうか? 質問する

開発者に同じ Java コード フォーマット ルールの使用を強制する方法を探しています。要件は次のとおりです。

  1. Gradle統合
    1. コードが正しくフォーマットされているかどうかを確認するタスク。これは、誤ったフォーマットのコードが送信された場合にビルドを失敗させるために CI で使用されます。

    2. 誤ってフォーマットされたコードを修正するタスク(あれば便利)

  2. IntelliJ 統合
    1. 誤ってフォーマットされたコードは、IDE 内の「コードの再フォーマット」アクションで修正できます。
    2. IDEによって生成されるコード(例:ゲッター/セッター生成)はルールに準拠している
  3. サポートするオープン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
    }
}

おすすめ記事