20. 贡献

Spring Cloud 是在非限制性 Apache 2.0 许可证下发布的, 并遵循非常标准的 Github 开发流程,使用 Github 跟踪器来查找问题并将拉取请求合并到 master 中。如果需要帮助, 即使是微不足道的事情,也请不要犹豫,但是 请遵循以下准则。spring-doc.cadn.net.cn

20.1. 签署贡献者许可协议

在我们接受重要的补丁或拉取请求之前,我们需要您签署贡献者许可协议。 签署贡献者协议并不授予任何人对主 存储库,但这确实意味着我们可以接受您的贡献,并且您将获得一个 如果我们这样做,作者信用。活动贡献者可能会被要求加入核心团队,并且 给定合并拉取请求的能力。spring-doc.cadn.net.cn

20.2. 行为准则

本项目遵守贡献者契约准则 行为。通过参与,您应该遵守此准则。请举报 不可接受的行为 [email protected]。spring-doc.cadn.net.cn

20.3. 守则约定和内务管理

这些对于拉取请求来说都不是必需的,但它们都会有所帮助。它们也可以是 在原始拉取请求之后但在合并之前添加。spring-doc.cadn.net.cn

20.4. 方格样式

Spring Cloud Build 带有一组 checkstyle 规则。您可以在spring-cloud-build-tools模块。该模块下最著名的文件是:spring-doc.cadn.net.cn

spring-cloud-build-tools/
└── src
    ├── checkstyle
    │   └── checkstyle-suppressions.xml (3)
    └── main
        └── resources
            ├── checkstyle-header.txt (2)
            └── checkstyle.xml (1)
1 默认检查样式规则
2 文件头设置
3 默认禁止规则

20.4.1. Checkstyle 配置

默认情况下,检查样式规则处于禁用状态。要将 checkstyle 添加到您的项目中,只需定义以下属性和插件。spring-doc.cadn.net.cn

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>
1 Checkstyle 错误时构建失败
2 违反 Checkstyle 时构建失败
3 Checkstyle 还分析测试源
4 添加 Spring Java Format 插件,该插件将重新格式化您的代码以传递大多数 Checkstyle 格式规则
5 将 checkstyle 插件添加到您的构建和报告阶段

如果您需要抑制某些规则(例如行长需要更长),那么您可以在${project.root}/src/checkstyle/checkstyle-suppressions.xml与你的压制。例:spring-doc.cadn.net.cn

项目根/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到你的项目。这样,将应用一些默认格式规则。您可以通过运行以下脚本来做到这一点:spring-doc.cadn.net.cn

$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig
$ touch .springformat

20.5. IDE 设置

20.5.1. Intellij IDEA

为了设置 Intellij,您应该导入我们的编码约定、检查配置文件并设置 checkstyle 插件。 以下文件可以在 Spring Cloud Build 项目中找到。spring-doc.cadn.net.cn

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 默认检查样式规则
2 文件头设置
3 默认禁止规则
4 应用大多数 Checkstyle 规则的 Intellij 的项目默认值
5 应用大多数 Checkstyle 规则的 Intellij 项目样式约定
Code style
图 1.代码样式

转到FileSettingsEditorCode style.在那里,单击旁边的图标Scheme部分。在那里,单击Import Scheme值并选择Intellij IDEA code style XML选择。导入spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml文件。spring-doc.cadn.net.cn

Code style
图 2.检测型材

转到FileSettingsEditorInspections.在那里,单击旁边的图标Profile部分。在那里,单击Import Profile并导入spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml文件。spring-doc.cadn.net.cn

格子样式

要让 Intellij 与 Checkstyle 一起使用,您必须安装Checkstyle插件。建议同时安装Assertions2Assertj自动转换 JUnit 断言spring-doc.cadn.net.cn

Checkstyle

转到FileSettingsOther settingsCheckstyle.在那里点击+Configuration file部分。在那里,您必须定义应从何处选择检查样式规则。在上图中,我们从克隆的 Spring Cloud Build 存储库中选择了规则。但是,您可以指向 Spring Cloud Build 的 GitHub 存储库(例如,对于checkstyle.xml:raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml).我们需要提供以下变量:spring-doc.cadn.net.cn

记得将Scan ScopeAll sources因为我们对生产和测试源应用了 checkstyle 规则。

20.6. 重复查找器

Spring Cloud Build 带来了basepom:duplicate-finder-maven-plugin,从而可以在 Java 类路径上标记重复和冲突的类和资源。spring-doc.cadn.net.cn

20.6.1. 重复 Finder 配置

默认情况下启用重复查找器,并将在verify阶段,但只有在您添加duplicate-finder-maven-pluginbuild该项目的部分pom.xml.spring-doc.cadn.net.cn

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

对于其他属性,我们设置了插件文档中列出的默认值。spring-doc.cadn.net.cn

您可以轻松覆盖它们,但将所选属性的值设置为前缀duplicate-finder-maven-plugin.例如,将duplicate-finder-maven-plugin.skiptrue为了跳过重复项,请检查您的构建。spring-doc.cadn.net.cn

如果您需要添加ignoredClassPatternsignoredResourcePatterns在设置中,请确保在项目的插件配置部分添加它们:spring-doc.cadn.net.cn

<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>