02.Spotless代码格式化工具

Spotless代码格式化工具

1.为什么需要

在一些大型项目或开源项目,由于开发人员太多,导致各个代码格式不统一。会让整体项目的代码可读性变差,那么如何可以统一代码格式呢?

使用Spotless就可以完成

2.是什么

Spotless 是支持多种语言的代码格式化工具(自动或手动方式均可),支持 Maven 和 Gradle 以 Plugin 的形式构建。目前 github 已经有 4000+ 开源项目在使用 Spotless 进行格式化代码

3.github地址

https://github.com/diffplug/spotless/tree/main/plugin-maven

4.代码格式化方式

Spotless 提供了多种 Java 代码格式化方式,如 googleJavaFormat、eclipse、prettier 等

5.使用方式

  1. Maven插件整合
  2. Gradle插件整合

6.Maven整合Spotless

目标

自动为代码添加 licenseHeader 和格式化代码

步骤

  1. 在父POM文件中引入插件依赖
  2. 创建代码格式文件
  3. 手动执行代码格式化
  4. 将格式化绑定到 Maven 生命周期

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

            <!-- spotless插件 -->
            <plugin>
                <groupId>com.diffplug.spotless</groupId>
                <artifactId>spotless-maven-plugin</artifactId>
                <version>2.22.1</version>
                <configuration>
                    <java>
                        <eclipse>
                            <file>dev-support/spotless_formatter.xml</file>
                        </eclipse>
                        <!-- 我这里没添加头要是需要就添加上 -->
<!--                        <licenseHeader>-->
<!--                            <file>dev-support/license-header</file>-->
<!--                        </licenseHeader>-->
                    </java>
                </configuration>
            </plugin>

创建代码格式化文件

在 dev-support 中创建 spotless_formatter.xml 文件,用于指定 Eclipse 代码格式化的设置

具体内容省略,请自行百度或谷歌

手动执行代码格式化

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

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

# 代码格式化
mvn spotless:apply

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

在这里插入图片描述

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

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

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

 <!--此插件用于格式化代码,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/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>

补充头文件内容

在 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 之间有足够的间隔,以保持代码的美观性

7.集成IDEA插件完成单文件格式化

为什么需要

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

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

安装

在这里插入图片描述

设置

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

在这里插入图片描述

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

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.jacoco是一个用于Java代码覆盖率测试和报告生成的开源工具。它可以帮助开发人员分析他们的代码测试覆盖率情况,并生成详细的报告。在你提供的引用中,主要是关于二次开发的一些修改和使用方法。 根据第一个引用,jacoco二次开发主要加入了增量代码匹配的功能。具体的设计方案可以参考jacoco的增量代码实践。这个二次开发主要是新增了一些类和修改了一些核心类。新增的类位于org.jacoco.core.internal.diff包下,而修改的类主要包括org.jacoco.core.analysis.Analyzer、org.jacoco.core.analysis.CoverageBuilder和org.jacoco.core.internal.flow.ClassProbesAdapter。你可以通过查看commit记录来了解具体的修改内容。 关于使用方法,首先需要下载源码,并运行mvn spotless:apply命令。这个命令主要是用于进行文件头文件校验,如果新增加了类或者修改了类,需要重新校验。然后,运行mvn clean package -Dmaven.test.skip=true -Dmaven.javadoc.skip=true命令进行构建。构建完成后,你可以在target目录下找到org.jacoco.cli-0.8.7-SNAPSHOT-nodeps.jar,这是构建出的需要的包。 关于生成单元覆盖率报告,你可以运行maven test命令。然后,在target目录下会生成jacoco-ut文件夹,其中包含了index.html文件,你可以用浏览器打开这个文件来查看单元覆盖率报告。 至于你提到的最开始未找到单元测试报告的问题,可能是因为在pom.xml配置中没有加入report部分的依赖,并指定report的位置。请确保你的pom.xml文件中有正确的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值