Checkstyle安装、使用

Checkstyle简介

Checkstyle是SourceForge下的一个项目,官网:
https://checkstyle.sourceforge.io/

在官网有详细的说明。

Checkstyle是一个开发工具,可以帮助开发者自动检查java代码是否遵循编程规范,将开发者从枯燥繁琐的手工检查中解脱出来。

Checkstyle是可以配置的,方便应用自己定制化的编程规范。

Google Java代码样式指南:
https://checkstyle.sourceforge.io/styleguides/google-java-style-20180523/javaguide.html

Sun Java代码样式规范:
https://checkstyle.org/styleguides/sun-code-conventions-19990420/CodeConvTOC.doc.html

使用checkstyle有几种方式,这几种方式互相独立,可以根据自己的需要来选择。用eclipse checkstyle插件的方式可以在编码的过程中实时看到违反规则的项

  • 在maven工程中,通过maven checkstyle插件来运行checkstyle
  • 在eclipse中,使用eclipse checkstyle插件来运行checkstyle

checkstyle不同版本对JRE 和 JDK的版本要求

方式一:用Maven下载安装、运行checkstyle

在Maven 的pom.xml文件中配置下载安装checkstyle

备注:其实这个步骤可以省略。因为在maven工程中第一次运行checkstyle:checkstyle这个goal的时候,会自动将maven插件版本下载下来,而maven插件的pom文件中已经指明了对checkstyle版本的依赖,所以也会将Checkstyle下载下来。对于maven-checkstyle-plugin 3.3.0这个插件版本,里边默认指定的checkstyle版本就是9.3版本。当然,如果自己想用其它的checkstyle版本,那么需要这一步骤。

例如,要安装9.3版本,将下面的代码片段放在Maven工程pom.xml文件的dependencies段落里面:

<!-- https://mvnrepository.com/artifact/com.puppycrawl.tools/checkstyle -->
<dependency>
    <groupId>com.puppycrawl.tools</groupId>
    <artifactId>checkstyle</artifactId>
    <version>9.3</version>
</dependency>

过一会儿,就下载到Maven本地仓库了:

checkstyle版本中预先定义的两个规则检查文件

在下载下来的checkstyle版本中,有预先定义的两个规则检查文件,分别是sun_checks.xml 和google_checks.xml。如果要看内容,可以打开checkstyle-9.3.jar文件:

打开checkstyle-9.3.pom这个文件,观察一下内容片段,其中将sun_checks.xml 和google_checks.xml包含了进来:

Maven的checkstyle插件

备注:Maven的checkstyle插件和checkstyle不是一回事。Maven checkstyle插件调用了checkstyle进行检查。

有关Maven Checkstyle插件的详细介绍,可以参考官网:https://maven.apache.org/plugins/maven-checkstyle-plugin/

如果不想明确指定maven的插件版本的话,那么在maven工程中第一次运行checkstyle:checkstyle这个goal的时候,会自动将maven插件版本下载下来。例如,我的maven版本是3.8.8版本,自动下载的Maven checkstyle插件版本是3.3.0:

Checkstyle插件版本maven-checkstyle-plugin 3.3.0默认使用Checkstyle 9.3版本,需要Java 8及以上。

打开maven-checkstyle-plugin-3.3.0.pom这个文件,看下内容片段:


当然也可以配置另外的版本:
https://maven.apache.org/plugins/maven-checkstyle-plugin/examples/upgrading-checkstyle.html

用maven运行checkstyle的方式

maven checkstyle插件有三个goals:

  • checkstyle:checkstyle 运行Checkstyle检查并生成一个html形式的报告(html格式和xml文件格式)。
  • checkstyle:checkstyle-aggregate 当有多个模块时,运行checkstyle检查并生成一个聚合形式的报告(html格式和xml文件格式)。
  • checkstyle:check 运行Checkstyle检查并将违反规则的地方显示在控制台;如果有违反规则的地方,build失败。

goal:checkstyle:checkstyle

这个goal的详细介绍:https://maven.apache.org/plugins/maven-checkstyle-plugin/checkstyle-mojo.html

执行这个goal,可以运行Checkstyle检查,并生成一个html形式的报告。
有很多参数可以进行控制,goal的详细介绍页有对每个参数的说明。

例如,这个参数可以配置规则集文件的路径,默认执行的是sun_checks.xml。

在eclipse中运行maven goal:checkstyle:checkstyle


运行输出:

到maven工程的target/site目录下查看,生成了checkstyle.html结果文件:

打开这个文件,看看具体内容:

其实,在target目录下面,还有规则集文件、结果的xml文件形式(这个截图是后来执行截取的):

在cmd窗口中运行maven goal:checkstyle:checkstyle

在cmd窗口,到maven工程的目录(即含有pom.xml文件的目录)下,执行命令

mvn checkstyle:checkstyle

到target目录下查看,生成了如下内容:

其中checkstyle-checker.xml是使用的规则集文件(应该是从checkstyle发布包中拷贝过来的)。

checkstyle-result.xml是生成结果的xml文件形式。

到target/site目录下查看:

这个是结果的html文件形式。

goal:checkstyle:checkstyle-aggregate

这个goal的详细介绍请参考:https://maven.apache.org/plugins/maven-checkstyle-plugin/checkstyle-aggregate-mojo.html

当有多个模块时 ,运行checkstyle检查并生成一个聚合形式的报告(html格式和xml文件格式)。

有很多参数可以控制。

在eclipse中运行maven goal:checkstyle:checkstyle-aggregate

下面一个工程中有三个模块。

在clipse中运行maven goal:checkstyle-aggregate:

运行结果:

到target目录下查看,生成了xml形式的结果报告:

到target/site目录下查看,生成了html形式的结果报告:

在cmd窗口执行maven goal:checkstyle-aggregate

下面一个工程中有三个模块,到cmd窗口输入如下命令:

mvn checkstyle:checkstyle-aggregate


到target目录下查看,生成了xml文件的结果:

到target/site目录下查看,生成了html形式的报告:

goal:checkstyle:check

这个goal的详细介绍:https://maven.apache.org/plugins/maven-checkstyle-plugin/check-mojo.html

执行这个goal,可以运行checkstyle检查并将违反规则的地方显示在控制台;如果有违反规则的地方,build失败。
有很多参数可以进行控制,goal的详细介绍页有对每个参数的说明。

在cmd窗口执行maven goal:checkstyle:check

到cmd窗口输入如下命令:

mvn checkstyle:check

运行输出:

到target目录下查看,也生成了xml文件保存的结果:

打开这个xml文件,看看内容:

在eclipse中执行maven goal:checkstyle:check



到target目录下查看,也生成了xml形式的结果报告:

用maven运行checkstyle检查后,可以查看实际使用的规则集文件

无论是cmd窗口下,还是在Eclipse中,只要运行maven checkstyle插件的三个goal中任何一个:

  • checkstyle:checkstyle
  • checkstyle:checkstyle-aggregate
  • checkstyle:check

在输出目录(默认是target目录)下面,都会将检查中实际使用的checkstyle规则集文件拷贝过来,命名为checkstyle-checker.xml:

可以打开maven下载包中的sun_checks.xml文件,和target目录下生成的checkstyle-checker.xml文件,对比下,其实内容是相同的(默认使用的是sun_checks.xml文件,而不是google_checks.xml):

maven下载包中的sun_checks.xml文件:


target目录下生成的checkstyle-checker.xml文件:

在maven工程的pom文件中指定checkstyle规则集文件的路径

说明

checkstyle发布版本预置了sun_checks.xml和google_checks.xml两个规则集文件,默认使用sun_checks.xml。但可以定制自己的规则集文件,例如,可以在sun_checks.xml的基础上定制自己的规则集文件。

定制好自己的规则集文件,可以放在合适的地方,以便引用。例如,可以在工程的根目录下创建一个config目录,在config目录下再创建checkstyle子目录,将定制的规则集文件放在该目录下:

maven checkstyle插件有个配置参数configLocation,可以配置规则集文件的路径:

  <configuration>
    <configLocation>config/checkstyle/checkstyle.xml</configLocation>
  </configuration>

想让定制的规则集文件生效,根据不同的需要,可以将maven checkstyle插件的信息放在pom文件的不同段落内:

  • 如果放在build下面的plugins段落内,那么执行maven checkstyle的三个goal的时候都可以执行到。但执行maven site阶段的时候无法执行到。
  • 如果放置在reporting下面的plugins段落内,那么执行maven的site 这个阶段的时候会执行到。但执行maven checkstyle的三个goal的时候执行不到。
  • 如果既想在maven checkstyle的三个goal的时候执行到,也想在执行maven site阶段的时候执行到,那么就两个地方都放。

在pom文件build下面的pluginManagement段落内的plugins小节增加maven checkstyle插件信息

在这个地方增加maven checkstyle插件信息,方便在build下面的plugins段落内、或者reporting下面的plugins段落内引用。
备注:如果这个地方不增加maven checkstyle插件信息,那么在reporting下面的plugins段落内直接使用maven checkstyle插件,会提醒artifactId找不到。

例如:

在pom文件build下面的plugins段落内增加checkstyle的规则集文件路径

例如:

下面可以在cmd窗口下执行checkstyle:checkstyle这个goal试试,看看是否生效:

target目录下面,自动将定制化的规则集的内容拷贝了过来,就是checkstyle-checker.xml这个文件(只是将内容拷贝了过来,文件的名字修改了)。

也生成了检测结果的xml形式的文件checkstyle-result.xml:

target/site目录下面,生成了html形式的结果文件:

注意,因为我们没有在reporting下面的plugins段落内增加maven checkstyle插件信息,所以执行maven的site这个goal的是,没有生成checkstyle检查结果。

在cmd窗口下先执行mvn clean命令清除以前的输出,然后执行mvn site命令,看看结果:

从输出信息中没有看到checkstyle检查结果。

到target目录下面和target/site目录下面查看,确实没有checkstyle检查结果:

在pom文件reporting下面的plugins段落内增加checkstyle的规则集文件路径

例如:

在cmd窗口下先执行mvn clean命令清除以前的输出,然后执行mvn site命令,看看结果:

从输出信息可以看到,生成了checkstyle检查结果,用的就是我们制定的规则集文件。

在pom文件reporting下面的plugins段落内增加checkstyle的规则集文件路径,但在build下面的plugins段落内没有指定

  <build>
	<pluginManagement>
      <plugins>
        <plugin>		  
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
       <plugin>          
          <artifactId>maven-site-plugin</artifactId>
        </plugin>
        <plugin>
		  <artifactId>maven-surefire-plugin</artifactId>
		  <version>3.0.0</version>
		</plugin>
		<plugin>
		  <artifactId>maven-failsafe-plugin</artifactId>
		  <version>3.0.0</version>
		</plugin>
     </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>        
        <configuration>
          <configLocation>config/checkstyle/checkstyle.xml</configLocation>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

在cmd窗口下执行mvn clean命令清空输出:

然在cmd窗口下执行mvn checkstyle:checkstyle命令:

从上面输出信息可以看到,此时调用的是默认的规则集文件sun_checks.xml。

下面在cmd窗口下执行mvn clean命令清空输出:

下面在cmd窗口下执行mvn site命令:

从上面输出可以看到,执行执行site这个goal引用的是我们定制的规则集文件,这是因为在reporting下面的plugins段落内进行了指定。

方式二:安装eclipse checkstyle插件,用eclipse checkstyle插件运行checkstyle

说明

eclipse checkstyle插件官网:https://checkstyle.org/eclipse-cs/#!/

安装eclipse checkstyle插件

三种安装方式简介

安装方式:
https://checkstyle.org/eclipse-cs/#!/install

有三种安装方式:

  • 用安装页面的install按钮拖拉方式安装(eclipse的版本是2021-06及以上)
  • 用Eclipse Marketplace client安装
  • 从更新网站安装。

用安装页面的install按钮拖拉方式安装

用上面页面中的install按钮拖拉方式安装的前提条件:**

1)已经启动了eclipse(eclipse的版本是2021-06及以上)。

2)eclipse中安装了Eclipse Marketplace Client

  • 鼠标按住网页中的Install按钮不要松开,拖到eclipse中的workspace中,自动弹出下面窗口:

过一段时间,搜索完成,出现如下界面:

  • 点击下面的Confirm按钮:

  • 勾选"I accept the terms of the licence agreement",并单击下面的Finish按钮:

查看进展:

备注:由于网络原因,可能一次某个进度的时候就失败了,那就重新开始上面的过程,会接着上次失败的地方继续安装,多试几次就成功了。

  • 到了一定的进展,弹出窗口,手动勾选Always trust all content:,点击Trust Selected,继续安装进程:
  • 过了一会儿,安装完成,点击Restart Now,重启Eclipse:
  • Eclipse重启后,点击Window->Preferences :


左侧出现Checkstyle,单击上去,右面出现内容框,说明eclipse Checkstyle插件已经安装成功了。

设置eclipse Checkstyle默认使用的规则集

点击Window->Preferences :

左侧出现Checkstyle,单击上去,右面出现内容框:

复选框中的内容根据自己的需要勾选就行了。

假设要将Sun Checks作为默认的话,鼠标点击到这行上,点击右侧的"Set as Default"按钮,然后点击下面的"Apply and Close"按钮,在弹出框中,根据自己需要选择Yes或者No,修改就生效了:

在某个项目中启动Checkstyle

方法一:在项目的Properties中设置激活Checkstyle

鼠标右键单击要启动Checkstyle的项目,在弹出菜单中选择Properties:

在属性窗口中,点击左侧的Checkstyle,在右侧界面勾选"Checkstyle active for this project",然后单击下方的Apply and Close:

回到程序界面,点击下面的Problems,可以看到检测出了6个不满足项:

在违反了规则的代码左侧,也显示了图标:

鼠标放上去,可以显示违反规则的具体提示:

方法二:在popup菜单中选择用Checkstyle立即检查代码

在项目上右键单击,在出现的弹出菜单中选择Checkstyle->Check Code with Checkstyle:

出现了检查结果:

方法三:在popup菜单中选择激活Checkstyle

在项目上右键单击,在出现的弹出菜单中选择Checkstyle->Activate Checkstyle:

项目下次编译的时候,就会检查代码的违反项。我们可以输入一个空行,然后保存,就触发了检查:

设置使用定制的外部规则集文件

点击Window->Preferences:

单击左侧的Checkstyle,然后单击右侧的New按钮:

出现配置窗口:

在下拉列表中选择External Configuration File:

输入一个名字,在Location中选择外部的规则集文件:

点击OK按钮,回到Checkstyle窗口,看到外部的规则集文件已经增加进来了。可以设置为默认,或者在单个项目中选择。

相关推荐
就这个java爽!8 小时前
JAVA网络编程【基于TCP和UDP协议】超详细!!!
java·开发语言·网络·tcp/ip·udp·eclipse·idea
djgxfc11 小时前
简单了解Maven与安装
java·maven
Jarlen17 小时前
将本地离线Jar包上传到Maven远程私库上,供项目编译使用
java·maven·jar
ggdpzhk19 小时前
Mybatis 快速入门(maven)
oracle·maven·mybatis
老王笔记1 天前
Maven下载安装
maven
litGrey1 天前
Maven国内镜像(四种)
java·数据库·maven
小码哥会用狙1 天前
EclipseRCP开发(三)-如何去除顽固原生菜单项
eclipse·rcp·eclipse定制开发
尘浮生2 天前
Java项目实战II基于Java+Spring Boot+MySQL的大学城水电管理系统(源码+数据库+文档)
java·开发语言·数据库·spring boot·后端·mysql·maven
尘浮生2 天前
Java项目实战II基于Java+Spring Boot+MySQL的保密信息学科平台系统(源码+数据库+文档)
java·开发语言·数据库·spring boot·后端·mysql·maven
codelife3212 天前
Maven 项目无法下载某个依赖
java·maven