JAVA--如何基于checkstyle统一代码风格和规范?
为了统一一个项目或团队成员的代码风格、遵守统一的代码规范,就需要团队使用相同的代码规范文件,并在代码编写、保存时按统一的代码风格进行格式化,并在编译、打包时强制进行代码规范检查,这样才能保证源码的风格统一,代码规范。
本文讲解如何基于checkstyle,实现一个项目源码的代码风格、规范统一。
1. 什么是checkstyle
checkstyle 是检查Java源代码是否符合代码标准或一组验证规则(最佳实践)的工具。
CheckStyle-IDEA: 是IDEA中使用CheckStyle进行代码规范检查的插件,
插件内置了Sun、Google的代码检查规范,也可以根据实际需要,导入自己的代码检查规范文件。
大部分公司都会制定自己的代码检查规范,一些大的开源项目也提供对应的代码检查规范文件,如海豚调度的代码规范检查文件
2. 如何安装、配置checkstyle
本文测试使用的IDEA的版本是:IntelliJ IDEA 2021.3.2 (Community Edition),安装的checkstyle插件版本是:5.67.4
2.1. 在IDEA中安装checkstyle插件
在IDEA中安装checkstyle比较简单,可以在线安装,也可以将插件下载到本地后,进行离线安装
2.2. 准备checkstyle.xml文件
将checkstyle.xml文件放在idea安装目录或项目源码的根目录,如下图所示,放在源码根目录下的style目录下
checkstyle.xml的内容可以参考海豚调度的代码规范检查文件做适应调整。
也可以根据公司要求,制定自己的代码规范检查文件
2.3. 配置checkstyle
如下图所示,导入准备的checkstyle.xml文件,并激活此配置.
2.4. 配置code style
在IDEA中, code style也可以通过checkstyle来进行配置,如下图所示, 导入准备的checkstyle.xml文件, 并将scheme重命名为my-checks【根据个人喜好命名】
注意:是按代码检查规范的要求针对代码进行格式化。
2.5. 配置文件保存时自动格式化
配置文件保存时的运作,如下图所示,保存时触发的运作包括如下:
- 根据配置的code style重新格式化代码
- 优化依赖导入
- 重新安排代码
3. 如何使用
3.1. 代码格式化
在IDEA中,可以针对所有源码或某一个package下的源码进行格式化,如下图所示
这样在运行checkstyle检查后,就不会报太多不符合规范的错误。
3.2. checkstyle代码检查
可以针对project、module、当前文件进行代码检查,如下图,是检查结果
针对不符合规范的内容,要进行代码重构。
3.3. 编译时触发代码检查
以下的配置是在代码编译或打包时,强制触发代码检查,如果代码检查不能过,则编译或打包会失败。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.45</version>
</dependency>
</dependencies>
<configuration>
<consoleOutput>true</consoleOutput>
<encoding>UTF-8</encoding>
<configLocation>style/checkstyle.xml</configLocation>
<failOnViolation>true</failOnViolation>
<violationSeverity>warning</violationSeverity>
<includeTestSourceDirectory>false</includeTestSourceDirectory>
<sourceDirectories>
<sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
</sourceDirectories>
<excludes>**\/generated-sources\/</excludes>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
相关文章
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
- 【java细节】Java代码忽略https证书:No subject alternative names present
- JAVA单元测试框架-12-java代码重复执行失败的测试用例
- 阿里P7程序员斩获offer感言:突破Java瓶颈期我用了这一套路线图
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- 【Java】Eclipse如何创建java项目并运行
- 《JAVA代码审计》(1)JAXB血案之 XML外部实体注入漏洞(XXE)
- 使用 Lombok 简化项目中无谓的Java代码
- Java工程师的生活、读书、技术栈
- JAVA_用Java来获取访问者真实的IP地址
- 面试突击(六)——JVM如何实现JAVA代码一次编写到处运行的?
- 【蓝桥杯Java组】Java选手做填空题时不得不会的API
- Java学习---网页编辑器FCKeditor使用详解
- 华为OD机试 -众数和中位数(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -内存资源分配(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 如何提高 Java 中锁的性能
- java代码如何发送QQ邮件
- 实操代码研究各种Java技术-java.toutiao.im
- 危险代码:如何使用Unsafe操作内存中的Java类和对象
- Java获取正在执行的函数名
- 什么是Java序列化,如何实现java序列化
- Java多线程基础(一)---Thread API(join深度详解、源码分析和案例分析之代码实现,优雅关闭线程三种方式)