Java代码静态检测工具比较
文章图片
最近团队想引进代码静态检测工具,稍微调研一下:
工具比较
功能比较
Checkstyle | FindBugs | PMD | Jtest | SonarQube | |
---|---|---|---|---|---|
使用方式 | IDE插件 | IDE插件 | IDE插件 | IDE插件 | IDE插件+独立部署的服务 |
自定义规则 | √ | √ | √ | √ | √ |
集成到Jenkins中 | √ | √ | √ | √ | |
多版本统计 | √ | ||||
缺陷跟踪记录统计 | √ | ||||
代码测试覆盖率 | √ (需要配合jacoco) |
代码缺陷分类 | 示例 | Checkstyle | FindBugs | PMD | Jtest |
---|---|---|---|---|---|
引用操作 | 空指针引用 | √ | √ | √ | √ |
对象操作 | 对象比较(使用 == 而不是 equals) | √ | √ | √ | |
表达式复杂化 | 多余的 if 语句 | √ | |||
数组使用 | 数组下标越界 | √ | |||
未使用变量或代码段 | 未使用变量 | √ | √ | √ | |
资源回收 | I/O 未关闭 | √ | √ | ||
方法调用 | 未使用方法返回值 | √ | |||
代码设计 | 空的 try/catch/finally 块 | √ |
- 支持超过25种编程语言:Java、C/C++、C#、PHP、Flex、Groovy、JavaScript、Python、PL/SQL、COBOL等。(不过有些是商业软件插件)
- 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理
- 可以在Android开发中使用
- 提供重复代码、编码标准、单元测试、代码覆盖率、代码复杂度、潜在Bug、注释和软件设计报告
- 提供了指标历史记录、计划图(“时间机器”)和微分查看
提供了完全自动化的分析:与Maven、Ant、Gradle和持续集成工具(Atlassian Bamboo、Jenkins、Hudson等) - 与Eclipse开发环境集成
- 与JIRA、Mantis、LDAP、Fortify等外部工具集
- 支持扩展插件
- 利用SQALE计算技术债务
- 支持Tomcat。不过计划从SonarQube 4.1起终止对Tomcat的支持。
文章图片
Sonarqube-nemo-dashboard 参考 Java静态检测工具/Java代码规范和质量检查简单介绍(转)
常用 Java 静态代码分析工具的分析与比较
【Java代码静态检测工具比较】SonarQube维基百科
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 不废话,代码实践带你掌握|不废话,代码实践带你掌握 强缓存、协商缓存!
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 工具|后天就是七夕节,你准备好了吗(送上几个七夕代码,展示你技能的时候到了!)
- Java|Java基础——数组