360Qtest专栏 静态代码扫描工具火线 (续)

simple · 2016年04月25日 · 最后由 liuxiaoyao0602 回复于 2016年07月24日 · 3556 次阅读

欢迎使用火线

前阵子在社区给大家分享了我们公司内部使用的静态扫描工具火线,没想到关注度挺高,不少同学问我什么时候开源出去,现在好消息来了,经过同事的一天努力,我们对外的官网终于上线了,并且我们开放了一个试用版给大家下载试用,满足大家的动手欲望,顺便跟大家分享一下我们目前在做的和后续准备做的事情。

官网

火线官网

关于试用

关于试用版,由于某些原因,给大家使用的是混淆后的版本,大家可以先了解一下这个工具是怎样运行的,大概能发现的类型是啥样的。有心的同学可以打开里面的包结构,看一下大概的组成部分。

关于扩展

火线在我们的努力下,实现了几个显著的优点:
跨平台
同时支持任意操作系统,目前 JDK 适配支持 1.7、1.8(由于 PMD 的原因,暂时不支持 1.6 的环境)。
跨语言
一些同学问能不能支持其他语言,比如 OC 或者 PHP 等等,火线由于人力和时间的限制,目前只支持安卓相关的检查,如果想检测其他语言的,完全可以自己动手去做,可以支持

C, C++, C#, PHP, Ruby, Fortran, JavaScript, PLSQL, Apache Velocity, Ruby, Scala, Objective C, Matlab, Python, Go这些语言的检测。

跨引擎
由于火线跟底层扫描引擎完全解耦的,所以不管是 PMD,还是 Findbugs 都可以集成进来,我们现在还在做一些尝试来集成 Findbugs 的某些特殊功能,目前遇到了一些技术瓶颈,相信很快就可以开放出来给大家使用。

如果已经在使用 findbugs 工具的同学,又想使用我们的火线,方法很简单。有兴趣的同学应该看到了,虽然我们上层架构做了混淆,但是底层是基于 pmd 的两个包进行扩展的,如图所示:

那么想扩展规则的同学该怎么做呢?从 PMD 官网 (pmd.github.io) 下载最新的源代码,找到 pmd-core 和 pmd-java 进行扩展,然后把 jar 包丢进火线的目录就可以了,不过新的规则需要在我们的 xml 配置文件中添加,否则是不会去执行的,修改的位置如下图所示:

关于自定义规则

我们会不定期的在我们的公众号和 testerhome 同步更新一些文章,教大家如何编写自定义规则,这个需要具备一定的 java 编程基础的同学,非常欢迎大家加入讨论。

关于开源

我们一直在往这方面努力,目前技术上还不够完善,需要更多的时间和产品去检验,我们会不断调整规则,优化误报率,跟大家保持分享和互动。

如何联系我们

其实我每天都有逛 testerhome,感兴趣的大家也可以关注我们的公众号

或者加我们的火线交流群去讨论(我们会及时答复相关的疑问)
群号:298228528

共收到 11 条回复 时间 点赞

支持,能简单上手

鼓掌,工具用着不错

#1 楼 @nancy2896 谢谢啦! 😄

棒棒哒~~简单实用

@simple 能集成到 Jenkins 吗?

#6 楼 @jira 可以,用 command 运行,支持 xml 格式的报告

#7 楼 @simple 嗯,用那个插件可以生成报告啊?pmd 插件貌似不行

赞,简单易上手。比 sonarqube 小巧多了

有个问题啊,生成的报告无论是集成到 Jenkins,或者本地打开 testReport.html,浏览器只能显示报告的前半部分,不能左右拖动,只有超大显示器才能看全。。。

找了这个工具很久,谢谢大神分享。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册