• 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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
  • 相关阅读:
    论环境如何影响我们的一切
    【loadrunner】form表单模式提交例子
    “不务正业”的美图公司也是一名“赌徒”
    Transmodeler中的路边停车,让车停进去的参数在哪儿设置?
    arm day 6
    flutter 适配屏幕宽高工具
    企业级日志分析系统ELK(如果事与愿违那一定另有安排)
    Express项目
    VMWare和CentOS 7 的超级详细的安装步骤!!
    根据3d框的八个顶点坐标,求他的中心点,长宽高和yaw值(Python)
  • 原文地址:https://blog.csdn.net/penriver/article/details/125577938