背景
- firline(火线)是360 搞的一款移动端的静态代码扫描工具,现在火线在360公司app的发布流程中是必不可少的环节,目前火线在360发布流程中已累计运行超过500天,扫描文件数2千万+,扫描代码量超过45亿行。火线最近推出的Android Studio插件360 Fireline Plugin下载量已达到4000+。
- 火线拥有四大规则:
- 安全类:和360信息安全部分合作,根据最权威的SDL专门定制,每一条SDL都有真实的攻击案例。
- 内存类:各种资源关闭类问题检测。
- 日志类:检测日志输出敏感信息内容的规则。
- 基础类:规范类、代码风格类、复杂度检查规则。
使用方法
- 详细可以参考官网的介绍使用手册。
- 我们这里重点来介绍下如何自定义规则。
自定义规则
- 以pmd规则为例,之前的文章中介绍过如何自定义pmd规则。静态代码扫描工具PMD
下载fireline.jar
- 先去官网下载fireline.jar。
- 然后将fireline.jar解压到当前目录,方便修改其文件。
- 看下解压后的目录结构:
以xpath 方式自定义pmd规则
以xpath方式定义的规则,只需要修改xml目录下的文件,如下图所示目录:
在PMD_RedLineRule_All.xml中添加一个rule,如下所示
|
|
- 在RedLineRule_All.xml中添加一个中文描述的规则:
|
|
- 综上,只需要修改这两个配置文件就可以了。还是比较简单方便的。
写java文件定义的规则
- 这种方式需要在pmd源码中编译pmd-core(如果有改动)和pmd-java。进入它们对应的目录,执行:
|
|
- 将编译得到的jar文件复制到fireline目录下,替换里面的对应的jar。
重新打包jar
- 在fireline的上层目录下面,执行命令:
|
|
进行扫描
- 接下来就可以用编译的jar进行扫描了。
|
|
总结
- 火线已经对规则过滤的非常好了,所以一般情况下不需要自定义规则,除非有和自己业务相关的代码需要规则来约束。