在AS中配置自己的CheckStyle
CheckStyle检查的主要内容
- Javadoc注释
- 命名约定
- 标题
- import语句
- 体积大小
- 空白
- 修饰符
- 块
- 代码问题
- 类设计
- 混合检查(包活一些有用的比如非必须的System.out和printstackTrace)
如何配置
首先,新建一个XXX.gradle
文件,写入如下信息:
apply plugin: 'checkstyle' // 必须
check.dependsOn 'checkstyle' // 必须
checkstyle {
toolVersion '6.19' // 必须
ignoreFailures false // 建议关闭
showViolations true // 建议开启
}
// 必须
task checkstyle(type: Checkstyle) {
configFile rootProject.file('checkstyle.xml')
source 'src'
// 可以配置多个
include '**/*.java'
// 可以配置多个
exclude '**/gen/**'
classpath = files()
}
然后再各个Module中,加入对这个XXX.gradle
文件的引用:
apply from: rootProject.file('XXX.gradle')
如何运行
terminal
./gradlew checkstyle(这个就是上面task的名字)
AS中配置
Android Studio Run之前执行checkstyle。
选择菜单Run--Edit Configurations
,如下图:
checkstyle.xml如何编写
http://checkstyle.sourceforge.net/checks.html
对应的中文的解释(不是很全的~):中文
更进一步 checkstyle + git hook
现在有需求,在代码提交的时候,强制进行checkstyle的检查,任何失败的都不能入库。这个需要怎么办呢?
git hook
git钩子能在特定的动作发生时触发自定义的脚本,执行特性需求的功能。钩子大体分为2种:
- 客户端钩子
- 服务端钩子
开启钩子
钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks
。 当你用 git init 初始化一个新版本库时,Git 默认会在这个目录中放置一些示例脚本。这些示例都是以.sample
结尾,并不能执行,需要启动他们,移除后缀,以一个合适的后缀命名,并改变文件的属性,使其可执行。
客户端钩子
克隆某个版本库时,它的客户端钩子 并不 随同复制。 如果需要靠这些脚本来强制维持某种策略,建议你在服务器端实现这一功能。
- pre-commit:钩子在提交信息到本地前运行。如果该钩子以非零值退出,Git 将放弃此次提交,不过你可以用
git commit --no-verify
来绕过这个环节。 - post-commit:钩子在整个提交过程完成后运行,不接受参数,一般用作某些通知之类的事情。
其实客户端还有很多的钩子,比如我的一个项目下的钩子:
服务端钩子
客户端钩子无法做到强制执行,这时可以采用服务器端的钩子对项目强制执行各种类型的策略。
这些钩子脚本在推送到服务器之前和之后运行。 推送到服务器前运行的钩子可以在任何时候以非零值退出,拒绝推送并给客户端返回错误消息,还可以依你所想设置足够复杂的推送策略。
- pre-reveive:处理来自客户端的推送操作时,最先被调用的脚本是 pre-receive。 它从标准输入获取一系列被推送的引用。如果它以非零值退出,所有的推送内容都不会被接受。
- update:update 脚本和 pre-receive 脚本十分类似,不同之处在于它会为每一个准备更新的分支各运行一次。 假如推送者同时向多个分支推送内容,pre-receive 只运行一次,相比之下 update 则会为每一个被推送的分支各运行一次。 它不会从标准输入读取内容,而是接受三个参数:引用的名字(分支),推送前的引用指向的内容的 SHA-1 值,以及用户准备推送的内容的 SHA-1 值。 如果 update 脚本以非零值退出,只有相应的那一个引用会被拒绝;其余的依然会被更新。
- post-receive:钩子整个过程完结以后运行,可以用来更新其他系统服务或者通知用户。它可以通知CI系统,或者其他测试系统。需要注意的是该脚本无法终止推送进程,客户端在它结束运行之前将保持连接状态,所以如果你想做其他操作需谨慎使用它,因为它将耗费你很长的一段时间。
一般服务端的钩子:
开启客户端钩子的示例
需要如下条件:
- jdk和git环境
- 对应的脚本文件
- 可执行的checkstyle的jar包
- 规则配置xml文件
部署到项目中即可。