コントリビュートする
Spring Cloud は、制限のない Apache 2.0 ライセンスでリリースされており、課題には Github トラッカーを使用し、プルリクエストをメインにマージするなど、非常に標準的な Github 開発プロセスに従っています。些細なことでも貢献したい場合は、遠慮なく以下のガイドラインに従ってください。
コントリビューターライセンス契約に署名する
重要なパッチまたはプルリクエストを受け入れる前に、コントリビューターライセンス契約 (英語) に署名する必要があります。コントリビューターの契約に署名しても、メインリポジトリへのコミット権は誰にも付与されませんが、あなたのコントリビュートを受け入れることができることを意味し、そうすれば作成者のクレジットを取得します。アクティブなコントリビューターは、コアチームに参加するように求められ、プルリクエストをマージする機能が与えられる場合があります。
行動規範
このプロジェクトは、ContributorCovenant の行動規範 [GitHub] (英語) に準拠しています。参加することにより、この規範を支持することが期待されます。許容できない動作を [ メール保護 ] (英語) に報告してください。
コード規約とハウスキーピング
これらはいずれもプルリクエストに必須ではありませんが、すべて役に立ちます。これらは、元のプルリクエストの後、マージの前に追加することもできます。
Spring Framework コード形式の規則を使用してください。Eclipse を使用する場合は、Spring Cloud Build (英語) プロジェクトから
eclipse-code-formatter.xml
ファイルを使用してフォーマッター設定をインポートできます。IntelliJ を使用している場合は、Eclipse コードフォーマッタープラグイン (英語) を使用して同じファイルをインポートできます。すべての新しい
.java
ファイルに、少なくともあなたを識別する@author
タグ、できればクラスの目的に関する段落を含む単純な Javadoc クラスコメントが含まれていることを確認してください。ASF ライセンスヘッダーコメントをすべての新しい
.java
ファイルに追加します (プロジェクト内の既存のファイルからコピーする)大幅に変更する .java ファイルに
@author
として自分自身を追加します(外観上の変更以上のもの)。いくつかの Javadoc を追加し、名前空間を変更する場合は、いくつかの XSDdoc 要素を追加します。
いくつかの単体テストも大いに役立ちます。誰かがそれをしなければなりません。
他に ブランチを使用している人がいない場合は、現在のメイン (またはメインプロジェクト内の他のターゲットブランチ) に対してそれをリベースしてください。
コミットメッセージを作成するときは、次の規則 (英語) に従ってください。既存の課題を修正する場合は、コミットメッセージの最後に
Fixes gh-XXXX
を追加してください(XXXX は課題番号です)。
Checkstyle
Spring Cloud Build には、一連の checkstyle ルールが付属しています。これらは spring-cloud-build-tools
モジュールにあります。モジュール内の最も注目すべきファイルは次のとおりです。
└── src ├── checkstyle │ └── checkstyle-suppressions.xml (3) └── main └── resources ├── checkstyle-header.txt (2) └── checkstyle.xml (1)
1 | デフォルトの Checkstyle ルール |
2 | ファイルヘッダーの設定 |
3 | デフォルトの抑制ルール |
Checkstyle 構成
Checkstyle ルールはデフォルトで無効になっています。プロジェクトに checkstyle を追加するには、次のプロパティとプラグインを定義するだけです。
<properties> <maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError> (1) <maven-checkstyle-plugin.failsOnViolation>true </maven-checkstyle-plugin.failsOnViolation> (2) <maven-checkstyle-plugin.includeTestSourceDirectory>true </maven-checkstyle-plugin.includeTestSourceDirectory> (3) </properties> <build> <plugins> <plugin> (4) <groupId>io.spring.javaformat</groupId> <artifactId>spring-javaformat-maven-plugin</artifactId> </plugin> <plugin> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </plugin> </plugins> <reporting> <plugins> <plugin> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </plugin> </plugins> </reporting> </build>
1 | Checkstyle エラー時にビルドに失敗する |
2 | Checkstyle 違反でビルドに失敗する |
3 | Checkstyle はテストソースも分析します |
4 | Checkstyle フォーマットルールのほとんどに合格するようにコードを再フォーマットする Spring Java フォーマットプラグインを追加します |
5 | checkstyle プラグインをビルドフェーズとレポートフェーズに追加します |
一部のルールを抑制する必要がある場合(たとえば、行の長さを長くする必要がある場合)、抑制を使用して ${project.root}/src/checkstyle/checkstyle-suppressions.xml
でファイルを定義するだけで十分です。例:
<?xml version="1.0"?> <!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <suppressions> <suppress files=".*ConfigServerApplication\.java" checks="HideUtilityClassConstructor"/> <suppress files=".*ConfigClientWatch\.java" checks="LineLengthCheck"/> </suppressions>
${spring-cloud-build.rootFolder}/.editorconfig
と ${spring-cloud-build.rootFolder}/.springformat
をプロジェクトにコピーすることをお勧めします。そうすれば、いくつかのデフォルトのフォーマットルールが適用されます。これを行うには、次のスクリプトを実行します。
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/.editorconfig -o .editorconfig
$ touch .springformat
IDE のセットアップ
Intellij IDEA
Intellij をセットアップするには、コーディング規約であるインスペクションプロファイルをインポートし、checkstyle プラグインをセットアップする必要があります。次のファイルは Spring Cloud Build [GitHub] (英語) プロジェクトにあります。
└── src ├── checkstyle │ └── checkstyle-suppressions.xml (3) └── main └── resources ├── checkstyle-header.txt (2) ├── checkstyle.xml (1) └── intellij ├── Intellij_Project_Defaults.xml (4) └── Intellij_Spring_Boot_Java_Conventions.xml (5)
1 | デフォルトの Checkstyle ルール |
2 | ファイルヘッダーの設定 |
3 | デフォルトの抑制ルール |
4 | Checkstyle ルールのほとんどを適用する Intellij のプロジェクトのデフォルト |
5 | Checkstyle ルールのほとんどを適用する Intellij のプロジェクトスタイルの規則 |
File
→ Settings
→ Editor
→ Code style
に移動します。Scheme
セクションの横にあるアイコンをクリックします。そこで、Import Scheme
値をクリックして、Intellij IDEA code style XML
オプションを選択します。spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml
ファイルをインポートします。
File
→ Settings
→ Editor
→ Inspections
に移動します。Profile
セクションの横にあるアイコンをクリックします。そこで、Import Profile
をクリックして、spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml
ファイルをインポートします。
Intellij を Checkstyle で動作させるには、Checkstyle
プラグインをインストールする必要があります。JUnit アサーションを自動的に変換するために Assertions2Assertj
もインストールすることをお勧めします
File
→ Settings
→ Other settings
→ Checkstyle
に進みます。Configuration file
セクションの +
アイコンをクリックします。そこで、checkstyle ルールをどこから選択するかを定義する必要があります。上のイメージでは、複製された Spring Cloud Build リポジトリからルールを選択しています。ただし、Spring Cloud Build の GitHub リポジトリを指定することはできます (例: checkstyle.xml
: raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle.xml (英語)
)。次の変数を指定する必要があります。
checkstyle.header.file
- クローンされたリポジトリ内またはraw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt (英語)
URL 経由で、Spring Cloud Build のspring-cloud-build-tools/src/main/resources/checkstyle-header.txt
ファイルを指定してください。checkstyle.suppressions.file
- デフォルトの抑制。クローンされたリポジトリ内またはraw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml (英語)
URL 経由で、Spring Cloud Build のspring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
ファイルを指定してください。checkstyle.additional.suppressions.file
- この変数は、ローカルプロジェクトの抑制に対応します。例:spring-cloud-contract
に取り組んでいます。次に、project-root/src/checkstyle/checkstyle-suppressions.xml
フォルダーをポイントします。spring-cloud-contract
の例は次のようになります:/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml
。
本番ソースとテストソースに checkstyle ルールを適用するため、Scan Scope を All sources に設定することを忘れないでください。 |
重複ファインダー
Spring Cloud Build には basepom:duplicate-finder-maven-plugin
が組み込まれており、これにより、java クラスパス上の重複および競合するクラスとリソースにフラグを立てることができます。
Finder 構成の複製
重複ファインダーはデフォルトで有効になっており、Maven ビルドの verify
フェーズで実行されますが、プロジェクトで duplicate-finder-maven-plugin
をプロジェクトの pom.xml
の build
セクションに追加した場合にのみ有効になります。
<build>
<plugins>
<plugin>
<groupId>org.basepom.maven</groupId>
<artifactId>duplicate-finder-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
その他のプロパティについては、プラグインのドキュメント [GitHub] (英語) に記載されているデフォルトを設定しています。
それらは簡単にオーバーライドできますが、duplicate-finder-maven-plugin
のプレフィックスが付いた選択したプロパティの値を設定します。例: ビルドでの重複チェックをスキップするには、duplicate-finder-maven-plugin.skip
を true
に設定します。
ignoredClassPatterns
または ignoredResourcePatterns
をセットアップに追加する必要がある場合は、プロジェクトのプラグイン構成セクションに必ず追加してください。
<build>
<plugins>
<plugin>
<groupId>org.basepom.maven</groupId>
<artifactId>duplicate-finder-maven-plugin</artifactId>
<configuration>
<ignoredClassPatterns>
<ignoredClassPattern>org.joda.time.base.BaseDateTime</ignoredClassPattern>
<ignoredClassPattern>.*module-info</ignoredClassPattern>
</ignoredClassPatterns>
<ignoredResourcePatterns>
<ignoredResourcePattern>changelog.txt</ignoredResourcePattern>
</ignoredResourcePatterns>
</configuration>
</plugin>
</plugins>
</build>