静态代码检查工具简介

在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。传统的代码复审、同行评审,通过人工方式来检查缺陷仍然是一件耗时耗力的事情。Java 静态代码分析(static code analysis)工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题。

下面简要介绍几款可用于Java静态代码分析的工具。介绍的顺序与工具所占市场份额无关。

1  阿里巴巴Java开发代码检测IDE插件

2017年10月,阿里推出了《阿里巴巴Java开发手册(终极版)》,并在持续更新中。该开发手册以Java开发者为中心视角,从编程规约、异常日志、单元测试、安全规约、工程结构、MySQL数据库六个维度,分别给出了相应的开发要求。相应地,阿里在10月份的杭州云栖大会上正式发布了Java代码检测IDE插件(支持与Eclipse、MyEclipse等工具的集成),供大家免费下载使用。个人感觉,阿里的插件对于MyEclipse的支持不够友好,需要倒腾很久,不过最终还是成功了。

https://github.com/alibaba/p3c

2  FindBugs

官网地址:http://findbugs.sourceforge.net/。

FindBugs 是由马里兰大学提供的一款开源 Java 静态代码分析工具。FindBugs 通过检查类文件或 JAR 文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs 既提供可视化 UI 界面,同时也可以作为 Eclipse/MyEclipse 插件使用。Findbugs规则比较简单实用,不注重样式与格式,属于轻量级的工具。

个人感觉,FingBugs对于MyEclipse的支持也不够友好,倒腾了很久,试验了很多方法,但在MyEclipse中还是未能安装成功,只能通过命令行模式来运行,极其不爽。虽然这个工具目前在业界的使用范围很广,从csdn在2016年所做的调查问卷来看,FindBugs的使用占比57%,但是,还是觉得现实很不美好。

3  Checkstyle

官网地址:http://checkstyle.sourceforge.net/

Checkstyle 是 SourceForge 的开源项目,通过检查对代码编码格式,命名约定,Javadoc,类设计等方面进行代码规范和风格的检查,从而有效约束开发人员更好地遵循代码编写规范。Checkstyle 提供了支持大多数常见 IDE 的插件,例如Eclipse。Checkstyle 对代码进行编码风格检查,并将检查结果显示在 Problems 视图中,开发人员可通过在 Problems 视图中查看错误或警告详细信息。有关Checkstyle的使用可阅读:代码规范工具-Checkstyle使用手册。

4  PMD

官网地址:https://pmd.github.io/。

PMD 是由 DARPA 在 SourceForge 上发布的开源 Java 代码静态分析工具。通过其内置的编码规则对 Java 代码进行静态检查,主要包括对潜在的 bug,未使用的代码,重复的代码,循环体创建新对象等问题的检验。PMD 提供了和多种 Java IDE 的集成,例如 Eclipse,IDEA,NetBean 等。

5  Sonar

Sonar是一个代码质量管理开放平台,能对不同规模和种类的工程进行代码质量管理,可以集成不同类型的工具一起工作。Sonar主要用于代码质量管理。该工具目前在业界的使用范围很广,从csdn在2016年所做的调查问卷来看,Sonar的使用占比41%。有关Sonar的使用可阅读:使用Sonar进行代码质量管理。

6  CodeAnalyzer

官网:http://www.spasvo.com/Products/CodeAnalyzer.asp

CodeAnalyzer简称CA,是上海泽众软件有限公司自主研发的代码审查工具,用于实现静态分析、代码走查、代码规范检查以及代码潜在错误分析。该工具并非开源,不过,可以在官网填写基本信息后申请获取试用版。

7  其他

Java静态代码分析工具不止上述这些,要了解更多资料可阅读如下文章。

(1)常用Java静态代码分析工具的分析与比较;

(2)静态代码分析工具列表分析---代码分析工具列表(30款工具);

(3)静态代码分析工具清单:开源片(各语言)。

静态代码检查工具简介相关推荐

  1. Python 常用静态代码检查工具简介

    对于我这种习惯了 Java 这种编译型语言,在使用 Python 这种动态语言的时候,发现错误经常只能在执行的时候发现,总感觉有点不放心. 而且有一些错误由于隐藏的比较深,只有特定逻辑才会触发,往往导 ...

  2. C/C++静态代码检查工具

    如果能够在代码提交测试之前发现这些潜在的错误,就能够极大地减轻测试人员的压力,减少软件项目的除错成本,可是传统的C/C++编译器对此已经无能为力,这个任务只能由专用的代码检查工具完成.有很多C/C++ ...

  3. 静态代码分析工具简介

    静态代码分析工具简介 什么是静态代码分析 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句 ...

  4. Python静态代码检查工具Flake8

    简介 Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强.Flake8是对 ...

  5. 静态代码检查工具 cppcheck 的使用

    CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们写的 ...

  6. vscode中对flake8(python静态代码检查工具)和yapf(python代码格式化工具)的设置

    在命令行下安装好flake8和yapf后在vscode中的用户设置(settings.json)中添加以下两行即可: "python.linting.flake8Enabled": ...

  7. c/c++ 静态代码检查工具

    文章目录 道理呢大家都懂,但是需要时间消化,而且人还是易犯错误的动物 lint gcc 12 sonarqube 道理呢大家都懂,但是需要时间消化,而且人还是易犯错误的动物 所以才有了,这些个静态代码 ...

  8. 静态代码检查工具-PMD

    静态代码检查工具-PMD 分类: 网络安全/ 工具使用/ 文章 提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免.类似于编码规范 ...

  9. Java 静态代码检查工具及其原理

    Intellij IDEA 静态代码检查工具: checkstyle.pmd.findbugs. Alibaba Java Coding Guidelines; 三种工具的对比 工具 目的 检查项 F ...

最新文章

  1. fastjson 不转某些字段_fastjson 过滤不需要的字段或者只要某些字段
  2. 电话订票每日开始时间(几点放票) - 北京本地宝
  3. 获得变量的名称获得传入参数的参数类型与堆栈中的函数名获得变量的名称
  4. Orac and LCM #641(div2) c题--求质因数次小指数
  5. POJ2941 SDUT2371Homogeneous squares
  6. python高级属性 用法 编程_python高级编程之面向对象高级编程
  7. ArcEngine中实现对符号的预览图输出
  8. 学习日记之工厂方法模式和Effective C++
  9. Visual Studio 代码提示选不中
  10. 时间:2014年3月28日15:51:27框架改进 增加日志功能log类
  11. [ASP.net]URL重写续篇
  12. W25Q16 存储器(Flash)
  13. 【Axure10基础教程】第六章 动态面板
  14. 吉他效果器插件-IK Multimedia AmpliTube 5 MAX 5.0.3 macOS
  15. MySQL索引原理(标贝科技)
  16. qq空间已删信息服务器,qq空间恢复已删除的说说方法
  17. Python——第四天的Gut Punch
  18. 记录导出微信聊天记录到硬盘的过程
  19. FQDN (fully qualified domain name,完全限定域名)
  20. html5 单元格宽度,html table呈现个人简历以及单元格宽度失效的问题解决

热门文章

  1. android 架构份额,Android 架构设计比较分析
  2. python是一种面相什么语言_Python面相对象编程的知识总结
  3. 三人小组关系c语言编程,理性分析一下c-block三人组的实力
  4. 面板php,自己的路面板添加php扩展
  5. java程序的开发步骤为,开发与运行Java程序需要经过的三个主要步骤为: ( )、( )、( )...
  6. 【NLP_Stanford课堂】语言模型1
  7. 洛谷 P1183 多边形的面积
  8. 全局变量、局部变量、静态全局变量、静态局部变量的区别
  9. easyui表单提交,后台获取不到值
  10. 站内搜索--3--之Lucene.Net使用