git提交前静态代码检查--基于火线360

一.背景

能进行静态代码检测的工具那么多,为啥偏偏是火线360(以下简称火线)呢?具体可以看这边,其次也是因为CI的jenkins也用到了它进行代码检查,这样本地和jenkins能保持检查规则的一致。

实现目标:在git commit前先进行静态代码检查,如果有检查出问题,此次commit则会失败

二.实现思路

在项目下的.git/hooks 文件下有git操作的各种钩子(shell脚本)例子,这里用到的是git提交前的pre-commit.sample钩子,修改该文件调用执行静态代码检查的gradle任务;这个任务首先会开启静态检查,其次检查完后会分析此次检查是否存在代码问题,如果存在代码问题会调用命令非正常退出,git钩子则会根据是否正常退出决定此次提交能否成功;

三.详细过程

1.本地gradle脚本(后续可以做成gradle插件方便其他项目使用)

①检测规则配置文件config.xml和fireline.jar的获取参考火线360的使用手册,本地集成主要看手册里面的命令行参数说明Gradle部署

②gradle脚本的使用已经在代码里有详细注释了

③pre-commit.sample的使用看下一节

2.git pre-commit钩子

这个钩子文件本就存在于android项目下的.git/hooks目录下,添加的代码只有上图红框框住的地方,添加代码的作用图中已有解释

3.应用本地插件

四.不足

①.因为规则不能自定义,不像lint那么灵活,没办法定制化
②.只能过滤规则

你可能感兴趣的:(git提交前静态代码检查--基于火线360)