`

FindBugs java静态代码分析

 
阅读更多

1FindBugs介绍

FindBugs是一款Java静态代码分析工具,与其他静态分析工具(如CheckstylePMD)不同,FindBugs 不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的缺陷。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。

最新版本是1.3.9.20090821,下载地址http://findbugs.sourceforge.net/downloads.html

FindBugs运用Apache BCEL 库分析类文件(class文件)而不是源代码,将字节码与一组缺陷模式进行对比以发现可能的问题。FindBugs的检测器已增至300多条,被分为不同的类型,常见的类型如下:

· 正确性(Correctness):这种归类下的问题在某种情况下会导致bug,比如错误的强制类型转换等。

· 最佳实践反例(Bad practice):这种类别下的代码违反了公认的最佳实践标准,比如某个类实现了equals方法但未实现hashCode方法等。

· 多线程正确性(Multithreaded correctness):关注于同步和多线程问题。

· 性能(Performance):潜在的性能问题。

· 安全(Security):安全相关。

· 高危(Dodgy):FindBugs团队认为该类型下的问题代码导致bug的可能性很高。

 

2、Eclipse中安装FindBugs插件

   下载Eclipse plugin 的版本,解压zip文件。

   将解压后的文件放到EclipsePlugin中。

   重新启动Eclipse 

 

    我使用的是MyEclipse8.5可能路径和大家的不太一样,我是放到了路径Genuitec/MyEclipse 8.5/dropins下面

 

 

3、Eclipse中使用FindBugs

重新启动eclipse

打开FindBugs视图

 

 

执行Find Bug 任务

右键单击你要检测的工程、包或文件,-->Find Bugs-->Find Bugs

check完成后将在Bug Explorer视图中看到问题列表,该列表以问题类型组织。

 

 

 

展开列表,双击列表中具体的问题就可以定位的具体的代码行。

 

 

 

 

4配置FindBugs
这里可以对FindBugs规则等进行详细设置。 
  选择你的项目,右键 => Properties => FindBugs =>

 

 

Run Automatically开关

当此项选中后,FindBugs将会在你修改Java类时自动运行,如你设置了Eclipse自动编译开关后,当你修改完Java文件保存,FindBugs就会运行,并将相应的信息显示出来。
当此项没有选中,你只能每次在需要的时候自己去运行FindBugs来检查你的代码。

Detector Configuration选择项

在这里你可以选择所要进行检查的相关的Bug Pattern条目,你可以根据需要选择或去掉相应的 检查条件。

 

Minimum priority to report选择项
这个选择项是让你选择哪个级别的信息进行显示,有LowMediumHigh三个选择项可以选择,很类似于Log4J的级别设置啦。 比如:


你选择了High选择项,那么只有是High级别的提示信息才会被显示。
你选择了Medium选择项,那么只有是MediumHigh级别的提示信息才会被显示。
你选择了Low选择项,那么所有级别的提示信息都会被显示。

Report bug categories选择项
在这里是一些显示Bug分类的选择:
Malicious code vulnerability关于恶意破坏代码相关方面的
Correctness关于代码正确性相关方面的
Internationalization关于代码国际化相关方面的
Performance关于代码性能相关方面的
Multithreaded correctness关于代码多线程正确性相关方面的

另外FindBugsUI页面,可以单独运行。也可以通过Ant以及命令行方式运行。

 

 

5其它分析工具

FingBugs静态分析工具外,还有PMDCheckstyleFingBugsPMDCheckstyle三个工具各有不同的特点,联合使用有助于减少误报错误,提高报告的准确率。

 

这三个工具检查的侧重点各有不同: 

工具

目的

主要检查内容

FindBugs

基于Bug Patterns概念,查找java bytecode中的潜在bug。在目前版本中,它不检查java源文件。

主要检查bytecode中的bug patterns,也允许用户自定义特定的bug patterns

PMD

检查java源文件中的潜在问题。

主要包括:

  -  try/catch/finally/switch语句块

 -       未使用的局部变量、参数和private方法

 -       if/while语句

 -       过于复杂的表达式,如不必要的if语句等

 -       复杂类

CheckStyle

检查java源文件是否与代码规范相符

主要包括

 -       Javadoc注释

 -       命名规范

 -       Headers

 -       Imports

 -       Size冲突和度量,如过长的方法

 -       Whitespace

 -       Modifiers

 -       Blocks

 -       Coding Problems

 -       Class Design

 -       重复代码

 -       Miscellaneous Checks

 -       Optional Checks

 

 

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

FindBugs的详细bug描述清单见:http://findbugs.sourceforge.net/bugDescriptions.html

分享到:
评论

相关推荐

    FindBugs Java静态代码分析工具

    FindBugs是一款Java静态代码分析工具,与其他静态分析工具(如Checkstyle和PMD)不同,FindBugs 不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的...

    FindBugs_Java静态代码分析工具_eclipse插件

    FindBugs是一款Java静态代码分析工具,与其他静态分析工具(如Checkstyle和PMD)不同,FindBugs 不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的...

    Java 静态代码分析工具调研和引入

    目前市场上的 Java 静态代码分析工具种类繁多且各有千秋,我们项目调研现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),其中引入并集成了Checkstyle,FindBugs,PMD这三种静态代码工具。

    findBugs静态代码测试工具

    `findBugs`是一款强大的静态代码分析工具,主要用于检测Java程序中的潜在错误、代码缺陷和不良编程习惯。它能够在代码运行之前进行分析,无需执行程序,因此得名“静态”。作为一款Eclipse插件,`findBugs`无缝集成...

    4 种主流 Java 静态代码分析工具

    Java作为一种广泛使用的编程语言,拥有丰富的静态代码分析工具,其中Checkstyle、FindBugs、PMD和Jtest是最为知名的几种。本文将详细介绍这四种工具的特点及其应用场景。 #### 二、静态代码分析工具综述 ##### 1. ...

    Jenkins集成Java 静态代码分析工具调研和引入

    本文章主要探讨了Java静态代码分析工具的引入和集成到Jenkins持续集成流程中。 ### 静态代码分析工具的引入 #### 什么是静态代码分析 静态代码分析是指不执行代码的情况下,通过算法对源代码进行检查的一种技术。...

    findbugs最新源代码20081008版本的

    FindBugs是一款著名的静态代码分析工具,它通过扫描Java字节码来检测潜在的错误和不良编程习惯,被誉为“程序员的无声守护者”。2008年10月08日的版本是FindBugs发展历程中的一个重要里程碑,对于研究其工作原理和...

    java代码静态检查工具

    Java静态检查工具,如CheckStyle,主要功能包括但不限于检查代码风格、规范、潜在的bug、冗余代码以及不一致的命名约定等。CheckStyle是其中非常著名的一个,它提供了一套自定义规则来确保代码遵循特定的编程标准,...

    findbugs工具测试java实验报告

    为了确保代码的质量,开发者通常会采用各种静态代码分析工具,其中FindBugs就是一款非常受欢迎的Java代码检测工具。FindBugs能够通过静态分析的方式,找出潜在的错误和不良编程习惯,而无需实际运行程序。 FindBugs...

    java静态代码分析插件checkstyle的应用

    Java静态代码分析插件Checkstyle在Java开发中的应用是一个重要的质量保证工具,它能帮助开发者遵循编码规范,提高代码的可读性和可维护性。Checkstyle通过对源代码进行检查,指出不符合约定或潜在问题的地方,使得...

    SpotBugs是FindBugs的继任者静态分析的工具用来寻找Java代码中bug

    SpotBugs是一款强大的静态代码分析工具,它是FindBugs项目的接班人,专注于在Java代码中检测潜在的错误和缺陷。静态分析是一种编程实践,它允许开发者在代码执行之前检查程序,无需运行程序就能发现潜在问题。这种...

    findbugs3.0.2插件 myeclipse

    FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化 UI 界面,同时...

    如何在Java中实现微服务的API文档静态代码分析

    通过使用SonarQube、Checkstyle和FindBugs等工具,可以在Java微服务中实现API文档的静态代码分析。这些工具不仅提供了强大的代码质量检查功能,还可以集成到CI/CD流程中,确保代码质量的持续改进。通过这些实践,...

    sonar-findbugs插件源码

    FindBugs是SonarQube中的一个重要插件,专门用于静态分析Java代码,查找可能的bug和设计问题。源码分析是深入理解软件工作原理的关键,对于学习和定制规则尤其有价值。 `sonar-findbugs`插件是SonarQube与FindBugs...

    Java静态检测工具的简单介绍-Sonar、Findbugs[文].pdf

    Sonar 是一个集成化的代码质量管理平台,它不仅包含了静态代码分析的功能,还提供了代码覆盖、代码复杂度、代码重复度等多种质量指标的度量。Sonar 的优势在于它的全面性和可扩展性,能够集成多种静态分析工具,如...

    findbugs插件 myeclipse

    indBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化 UI 界面,同时也可以...

    findbugs代码检查工具

    FindBugs是一款强大的静态代码分析工具,主要用于检测Java代码中的潜在错误和不良编程习惯。它通过对编译后的字节码进行分析,而不需要实际运行代码,就能找出可能存在的问题,从而帮助开发者提升代码质量,减少运行...

    eclipse上findbugs查件

    FindBugs 是 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化 UI 界面,同时也可以作为 Eclipse插件使用。文本...

Global site tag (gtag.js) - Google Analytics