zl程序教程

您现在的位置是:首页 >  后端

当前栏目

JAVA--如何基于checkstyle统一代码风格和规范?

JAVA代码 如何 基于 -- 规范 统一 风格
2023-09-11 14:16:24 时间

为了统一一个项目或团队成员的代码风格、遵守统一的代码规范,就需要团队使用相同的代码规范文件,并在代码编写、保存时按统一的代码风格进行格式化,并在编译、打包时强制进行代码规范检查,这样才能保证源码的风格统一,代码规范。

本文讲解如何基于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>