Java代码静态检测工具比较


最近团队想引进代码静态检测工具,稍微调研一下:

工具比较

功能比较

Checkstyle FindBugs PMD Jtest SonarQube
使用方式 IDE插件 IDE插件 IDE插件 IDE插件 IDE插件+独立部署的服务
自定义规则
集成到Jenkins中
多版本统计
缺陷跟踪记录统计
代码测试覆盖率
(需要配合jacoco)

工具查错能力比较

代码缺陷分类 示例 Checkstyle FindBugs PMD Jtest
引用操作 空指针引用
对象操作 对象比较(使用 == 而不是 equals)
表达式复杂化 多余的 if 语句
数组使用 数组下标越界
未使用变量或代码段 未使用变量
资源回收 I/O 未关闭
方法调用 未使用方法返回值
代码设计 空的 try/catch/finally 块

SonarQube 特征

  • 支持超过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 静态代码分析工具的分析与比较

SonarQube维基百科


 上一篇
基于SonarQube代码质量检查工具总结 基于SonarQube代码质量检查工具总结
# 1 概述SonarQube(sonar)是一个开源平台,用于管理源代码的质量。 SonarQube不只是一个质量数据报告工具,更是代码质量管理平台。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScri
2019-10-13
下一篇 
线程的5种状态总结 线程的5种状态总结
线程的5种状态线程可以有如下5种状态:5种状态的转换图如下 New (新创建)*  当用*new**操作符创建一个线程时,如new Thread(r),该线程还没有开始运行。这意外这它的状态是new。此时程序还没有开始运行线程中的代码,
2019-10-13
  目录