团队代码风格混乱?Spotless 帮你搞定!

开发 开发工具
Spotless 就是这样一款工具,它不仅能够自动进行代码格式化,还能够确保代码始终符合预定的标准。

1. 前言

大家好,我是飘渺。在今天的DDD与微服务系列文章中,我们将继续探讨一个关键主题:如何通过统一的代码风格来提升团队协作效率。

在当今流行的微服务架构中,通常涉及多个开发团队的协作。由于团队规模庞大,不同开发者可能采用不同的编码风格,导致代码不一致、难以阅读。在这种情况下,代码格式化工具变得尤为重要。Spotless 就是这样一款工具,它不仅能够自动进行代码格式化,还能够确保代码始终符合预定的标准。通过保持一致的代码风格,Spotless 提升了代码的可读性和维护性,增强了团队合作效率,无论是简化代码审查、提高代码质量,还是帮助新成员快速融入项目。

在本文中,我们将重点探讨在 DailyMart 项目中如何借助 Spotless 实现整个项目的代码风格统一。

2. 使用指南

Spotless 的使用非常简单。以下是官方示例代码:

user@machine repo % mvn spotless:check
[ERROR]  > The following files had format violations:
[ERROR]  src\main\java\com\diffplug\gradle\spotless\FormatExtension.java
[ERROR]    -\t\t····if·(targets.length·==·0)·{
[ERROR]    +\t\tif·(targets.length·==·0)·{
[ERROR]  Run 'mvn spotless:apply' to fix these violations.
user@machine repo % mvn spotless:apply
[INFO] BUILD SUCCESS
user@machine repo % mvn spotless:check
[INFO] BUILD SUCCESS

通过执行 mvn spotless:check 命令,您可以检查项目代码是否存在格式问题。接着使用 mvn spotless:apply 进行代码格式化。再次运行检查命令时,格式错误将会消失。

3. 项目实战

在 DailyMart 项目中,我使用 Spotless 实现了两个关键方面的统一:Java 文件的 licenseHeader 和 Java 代码的格式化。

Spotless 提供了多种 Java 代码格式化方式,如 googleJavaFormat、eclipse、prettier 等。基于定制化的考虑,我选择了使用 eclipse 进行 Java 代码格式化。

3.1 在父POM文件中引入插件依赖

<build>
 <plugins>
  <!--此插件用于格式化代码,mvn spotless:check mvn spotless:apply -->
  <plugin>
   <groupId>com.diffplug.spotless</groupId>
   <artifactId>spotless-maven-plugin</artifactId>
   <version>2.22.1</version>
   <configuration>
    <java>
     <eclipse>
      <file>dev-support/dailymart_spotless_formatter.xml</file>
     </eclipse>
     <licenseHeader>
      <file>dev-support/license-header</file>
     </licenseHeader>
    </java>
   </configuration>
  </plugin>
 </plugins>
</build>

这段代码将 Spotless 插件引入项目,并在配置中指定了 Java 代码风格文件和头文件的路径。

3.2 创建头文件

在 dev-support 文件夹中创建头文件 license-header,内容如下:

/*
 * DailyMart is a microservice-based e-commerce project implemented
 * with Domain-Driven Design (DDD).
 * Copyright (C) 2023 Java日知录
 *
 * ...
 */

这样,当使用 Spotless 进行代码格式化时,会为所有代码文件添加这段头信息。请注意,在头文件后面留一个空行,以确保 licenseHeader 与 Java 代码的 package 之间有足够的间隔,以保持代码的美观性。

3.3 创建代码格式文件

在 dev-support 中创建 dailymart_spotless_formatter.xml 文件,用于指定 Eclipse 代码格式化的设置。以下是一个示例配置:

<profiles version="13">
    <profile kind="CodeFormatterProfile" name="DailyMart Code Style" version="13">
 <setting id="org.eclipse.jdt.core.compiler.source" value="1.8" />
 <setting id="org.eclipse.jdt.core.compiler.compliance" value="1.8" />
 <setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.8" />
 <setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="true" />
 <setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4" />
 <setting id="org.eclipse.jdt.core.formatter.lineSplit" value="200" />
 <setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="200" />
 <setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space" />
 <setting id="org.eclipse.jdt.core.formatter.indentation.size" value="1" />
        ...
 </proofile>
</profiles>

完整配置请参考源代码文件。您可以根据项目需要灵活调整代码风格。同时,我还提供了一个名为 eclipse-java-google-style.xml 的样例配置文件,可以在以下地址找到:https://github.com/google/styleguide/blob/gh-pages/eclipse-java-google-style.xml

3.4 执行代码格式化

经过上述步骤,我们就可以执行以下命令来检查 Java 代码是否符合规范并进行格式化:

# 查看哪些代码不符合代码格式
mvn spotless:check

# 代码格式化
mvn spotless:apply

当然,我们也可以直接在 IDEA 中使用 Maven 插件来执行这些操作。只需点击一下,即可完成整个过程。

图片图片

3.5 将格式化绑定到 Maven 生命周期

在 DailyMart 实际应用中,我选择将 Spotless 格式化操作绑定到 compile 阶段,这样当执行 mvn install 时,代码会自动进行格式化。

以下是在 POM 文件中配置的相关部分:

<build>
  <plugins>
    <!--此插件用于格式化代码,mvn spotless:check mvn spotless:apply -->
    <plugin>
      <groupId>com.diffplug.spotless</groupId>
      <artifactId>spotless-maven-plugin</artifactId>
      <version>${spotless-maven-plugin.version}</version>
      <configuration>
        <java>
          <eclipse>
            <file>dev-support/dailymart_spotless_formatter.xml</file>
          </eclipse>
          <licenseHeader>
            <file>dev-support/license-header</file>
          </licenseHeader>
        </java>
      </configuration>

      <executions>
        <execution>
          <goals>
            <goal>apply</goal>
          </goals>
          <phase>compile</phase>
        </execution>
      </executions>

    </plugin>
  </plugins>
</build>

3.6 集成IDEA插件

如果开发者在编写代码时想要检查单个文件是否符合规范,执行 mvn spotless:check 或 mvn spotless:apply 或许稍显繁琐,因为默认格式化范围是整个项目。

但是,我们可以借助 IDEA 的插件 Adapter for Eclipse Code Formatter 来实现单个文件的格式化。只需将我们的自定义代码文件替换原文件即可。

在IDEA中安装 Adapter for Eclipse Code Formatter 插件

图片图片

修改代码格式化文件,将自定义的代码风格导入。

图片图片

这样,您就可以使用 IDEA 的快捷键对单个文件进行代码格式化,同时使用的是您自定义的代码风格。

以上就是使用 Spotless 统一代码风格的实践方法。通过这些步骤,你也可以轻松地在团队中实施统一的代码规范,从而提高代码质量和团队协作效率。

责任编辑:武晓燕 来源: JAVA日知录
相关推荐

2023-12-10 21:56:29

Pyt hon截图PyQt

2015-12-02 15:23:19

Windows 10激活升级

2010-11-02 09:53:57

2013-06-06 10:10:59

项目项目代码代码风格

2017-07-10 14:58:23

JavaScript代码风格写作准则

2020-11-09 10:25:59

ICC低成本转型

2022-04-15 08:03:41

SaaS应用管理市场

2022-01-04 10:19:23

架构运维技术

2018-06-11 17:27:56

APP流量华为

2017-05-24 15:03:52

NAS存储网络

2022-06-13 13:45:56

Linuxmtr命令

2014-07-16 16:23:41

浪潮服务器

2021-01-25 12:34:36

网络IT架构

2017-09-26 10:51:55

提高数据库性能

2017-10-12 13:50:49

大数据企业分析专家

2023-07-12 08:01:28

FOADMROADMOXC

2013-06-21 10:14:26

云计算医院挂号

2023-08-21 12:13:53

2017-08-25 10:26:04

业务逻辑程序员
点赞
收藏

51CTO技术栈公众号