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 的快捷键对单个文件进行代码格式化,同时使用的是您自定义的代码风格

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416157.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5W紫外激光打标机优势特点

紫外激光打标机在当今市场上备受关注&#xff0c;而5W紫外激光打标机更是其中的佼佼者。作为一种高精度、高效率的激光加工设备&#xff0c;5W紫外激光打标机在各个领域都有着广泛的应用。 首先&#xff0c;让我们来了解一下5W紫外激光打标机的基本原理。紫外激光打标机利用高能…

transbigdata笔记:清理研究区域内的轨迹漂移

1 方法介绍 transbigdata 考虑了三种轨迹漂移&#xff0c;需要被清理 速度阈值&#xff1a;如果当前轨迹数据点与之前&#xff08;和后续&#xff09;轨迹数据点之间的速度超过阈值&#xff0c;则视为漂移。 距离阈值&#xff1a;如果当前轨迹数据点与上一个&#xff08;和后…

鸿蒙原生应用/元服务实战-AGC团队账户

多人及内外结合去开发运营鸿蒙原生应用元服务时&#xff0c;需要用到团队账户&#xff0c;AGC提供了强大的团队角色与权限分工能力。 团队帐号是开发者联盟为实名开发者提供的多个成员帐号登录与权限管理服务。当前团队帐号支持成员参与应用市场&#xff08;付费推广、应用内付…

macOS安装VMware Fusion 13试用版本

1.下载: Download VMware Fusion | VMware 保存到桌面 下载成功: 双击dmg文件运行安装 安装成功 <

(二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真

一、创建工作空间 mkdir catkin_ws cd catkin_ws mkdir src cd src 二、下载wpr_simulation源码 git clone https://github.com/6-robot/wpr_simulation.git 三、编译 ~/catkin_make 目录下catkin_makesource devel/setup.bash 四、运行 roslaunch wpr_simulation wpb_s…

Delphi接口Post内Authorization传Bearer Token问题

1.Delphi调用POST接口时&#xff0c;使用IXMLHTTPREQUEST调用Post接口时&#xff0c;有时候三方会要求往Authorization传Bearer Token。找了很久资料都没找到&#xff0c;后来解决了。发个帖子记录一下&#xff0c;下回能够直接找。如下图所示&#xff0c;PostMan测试示例 2.具…

自学C语言-4

第4章 运算符与表达式 了解了程序中常用的数据类型后&#xff0c;还应该懂得如何操作这些数据。因此&#xff0c;掌握C语言中各种运算符与表达式是必不可少的。本章致力于使读者了解表达式的概念&#xff0c;掌握运算符及相关表达式的使用方法&#xff0c;其中包括赋值运算符、…

合适的索引顺序

一.前言 正确的顺序依赖于使用索引的查询,并且同时需要考虑如何更好地满足排序和分组的需要。因为哈希或者其他类型的索引并不会像 B-Tree索引一样顺序存储数据,所以这里只针对B-Tree展开讨论。 二.合适的索引顺序 1. 概念 对于如何选择索引顺序有一个经验法则: 将选择性最…

Java医院信息管理系统

技术框架&#xff1a; springboot shiro layui jquery thymeleaf nginx 有需要的可以联系我。 运行环境&#xff1a; jdk8 mysql IntelliJ IDEA maven项目功能&#xff1a; 本项目是用springbootlayuishiro写的医院管理系统&#xff0c;系统的业务比较复杂&#x…

机器学习周刊第五期:一个离谱的数据可视化Python库、可交互式动画学概率统计、机器学习最全文档、快速部署机器学习应用的开源项目、Redis 之父的最新文章

date: 2024/01/08 这个网站用可视化的方式讲解概率和统计基础知识,很多内容还是可交互的,非常生动形象。 大家好,欢迎收看第五期机器学习周刊 本期介绍7个内容,涉及Python、概率统计、机器学习、大模型等,目录如下: 一个离谱的Python库看见概率,看见统计2024机器学习最…

BGP最通俗易懂的讲解——路由反射器

路由反射器 点赞关注&#xff0c;持续更新 路由反射器RR (Route Reflector&#xff09; : 允许把从IBGP 对等体学到的路由反射到其他BGP对等体的BGP设备。客户机 (Client) : 与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR建立邻居关系。非客户机 (Non-Client) …

【linux】Debian10.0配置vsftpd

一、基本步骤 在 Debian 10 (Buster) 上要配置 vsftpd (Very Secure FTP Daemon)&#xff0c;请按照以下步骤操作&#xff1a; 1. 安装 vsftpd: sudo apt update sudo apt install vsftpd 2. 在启动配置之前&#xff0c;建议备份原始的配置文件: sudo cp /etc/vsftpd.con…