コントリビュートする

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 モジュールにあります。モジュール内の最も注目すべきファイルは次のとおりです。

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 を追加するには、次のプロパティとプラグインを定義するだけです。

pom.xml
<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>
1Checkstyle エラー時にビルドに失敗する
2Checkstyle 違反でビルドに失敗する
3Checkstyle はテストソースも分析します
4Checkstyle フォーマットルールのほとんどに合格するようにコードを再フォーマットする Spring Java フォーマットプラグインを追加します
5checkstyle プラグインをビルドフェーズとレポートフェーズに追加します

一部のルールを抑制する必要がある場合(たとえば、行の長さを長くする必要がある場合)、抑制を使用して ${project.root}/src/checkstyle/checkstyle-suppressions.xml でファイルを定義するだけで十分です。例:

projectRoot/src/checkstyle/checkstyle-suppresions.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] (英語) プロジェクトにあります。

spring-cloud-build-tools/
└── 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 デフォルトの抑制ルール
4Checkstyle ルールのほとんどを適用する Intellij のプロジェクトのデフォルト
5Checkstyle ルールのほとんどを適用する Intellij のプロジェクトスタイルの規則
Code style
図 1: コードスタイル

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 ファイルをインポートします。

Code style
図 2: インスペクションプロファイル

File → Settings → Editor → Inspections に移動します。Profile セクションの横にあるアイコンをクリックします。そこで、Import Profile をクリックして、spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml ファイルをインポートします。

Checkstyle

Intellij を Checkstyle で動作させるには、Checkstyle プラグインをインストールする必要があります。JUnit アサーションを自動的に変換するために Assertions2Assertj もインストールすることをお勧めします

Checkstyle

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 ルールを適用するため、Scan Scope を All sources に設定することを忘れないでください。

重複ファインダー

Spring Cloud Build には basepom:duplicate-finder-maven-plugin が組み込まれており、これにより、java クラスパス上の重複および競合するクラスとリソースにフラグを立てることができます。

Finder 構成の複製

重複ファインダーはデフォルトで有効になっており、Maven ビルドの verify フェーズで実行されますが、プロジェクトで duplicate-finder-maven-plugin をプロジェクトの pom.xml の build セクションに追加した場合にのみ有効になります。

pom.xml
<build>
    <plugins>
        <plugin>
            <groupId>org.basepom.maven</groupId>
            <artifactId>duplicate-finder-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

それらは簡単にオーバーライドできますが、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>