一.背景
最近了解到可以通过gitlab+jekens做代码的自动化部署,但是项目中并不需要自动部署。同时最近一直让师弟在做代码review的事情,在想能不能通过gitlab来做代码的检测。虽然通过idea阿里的插件以及eclipse的插件都是可以做到代码规范检测,但是人都是有惰性的,最会忘记去做检测就上传代码。所以想在代码上传的时候做一个限制。
二.实现过程
了解了下最新的一些代码检测方法,找了一种相对来说比较简单的做法,在maven中集成checkstyle的插件,在代码上传的时候通过gitlab的CI来跑maven的build来实现检测。
1)maven中集成checkstyle
在pom中插入checkstyle,更新下载相应的jar包即可。可通过mvn checkstyle:check来进行代码规范的检测,当我们什么都不配置的时候是使用的checkstyle默认的检测规则来检测代码,相对来说比阿里的规范还要严格。所以我们可以通过自定义规则来做相应的限制,这个道理就类似于前端的eslint和tslint来做代码规范一样。
要添加自定义规则的话我们先在项目的根目录新建个xml,我们命名为check-style.xml。因为具体的规则太多,本文中不一一介绍,大家感兴趣的可以自行百度。这边贴上xml的内容供大家参考。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!-- This is a checkstyle configuration file. For descriptions of
what the following rules do, please see the checkstyle configuration
page at http://checkstyle.sourceforge.net/config.html -->
<module name="Checker">
<!-- 重复代码的检查,超过20行就认为重复,UTF-8格式-->
<module name="TreeWalker">
<!-- javadoc的检查 -->
<!-- 检查所有的interface和class -->
<module name="JavadocType">
<property name="allowUnknownTags" value="true"/>
</module>
<!--<module name="JavadocMethod">-->
<!--<property name="scope" value="private" />-->
<!--<property name="allowMissingPropertyJavadoc" value="true" />-->
<!--<property name="allowMissingParamTags" value="true" />-->
<!--<property name="logLoadErrors" value="true" />-->
<!--<property name="suppressLoadErrors" value="true" />-->
<!--</module>-->
<!-- 命名方面的检查,它们都使用了Sun官方定的规则。 -->
<!-- 局部的final变量,包括catch中的参数的检查 -->
<module name="LocalFinalVariableName" />
<!-- 局部的非final型的变量,