`
donsun
  • 浏览: 31731 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

FindBugs在项目中的应用

阅读更多

FindBugs在项目中的应用

目录

1 FINDBUGS 是什么?   

2 使用FINDBUGS的意义   

4 BUGS示例   

4.1 检测器:DC_DOUBLECHECK   

4.2 检测器:DE_MIGHT_IGNORE   

4.3 检测器:找出 HASH EQUALS 不匹配   

4.4 检测器:NULL 指针对 NULL 的解引用(DEREFERENCE)和冗余比较   

5 FINDBUGS安装与运行   

6 参考資料   

 

1 FindBugs 是什么?

FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。在编译期预测出运行期代码缺陷。

2 使用FindBugs的意义

FindBugs承诺无需开发人员费劲就能找出代码中已有的缺陷。当然,如果有多年的编写经验,就会知道这些承诺并不是一定能兑现。尽管如此,好的静态分析工具仍然是工具箱中的无价之宝。
FindBugs所能主要包括:

  1.  指出隐患代码
  2.  纠正错误逻辑
  3.  纠正不良风格
  4.  提高程序性能

代码质量工具的一个问题是它们容易为开发人员提供大量但并非真正问题的问题——即 伪问题(false positives)。出现伪问题时,开发人员要学会忽略工具的输出或者放弃它。FindBugs 的设计者 David Hovemeyer 和 William Pugh 注意到了这个问题,并努力减少他们所报告的伪问题数量。与其他静态分析工具不同,FindBugs 不注重样式或者格式,它试图只寻找真正的缺陷或者潜在的性能问题。

3 执行规则

 

4 Bugs示例

4.1 检测器:DC_DOUBLECHECK

//DC_DOUBLECHECK
class Foo { 
  private Helper helper = null;
  public Helper getHelper() {
    if (helper == null) 
        helper = new Helper();
    return helper;
    }
  // other functions and members...
  }
 
//DC_DOUBLECHECK
class Foo { 
  private Helper helper = null;
  public synchronized Helper getHelper() {
    if (helper == null) 
        helper = new Helper();
    return helper;
    }
  // other functions and members...
  }

 4.2 检测器:DE_MIGHT_IGNORE

// DE_MIGHT_IGNORE
jp.co.softbrain.stc.document.download.DBToFile.downLoadFile
try{
ServletOutputStream out = resp.getOutputStream();
    out.println(e.toString());
    out.flush();
    out.close();
    throw e;
    } catch (Exception ee) {}

 4.3 检测器:找出 hash equals 不匹配

这个检测器寻找与 equals() 和 hashCode() 的实现相关的几个问题。这两个方法非常重要,因为几乎所有基于集合的类—— List、Map、Set 等都调用它们。一般来说,这个检测器寻找两种不同类型的问题——当一个类:重写对象的 equals() 方法,但是没有重写它的 hashCode 方法,或者相反的情况时。

1  String b= "bob";
2  b.replace('b', 'p');
3  if(b.equals("pop"))

 这个错误很常见。在第 2 行,程序员认为他已经用 p 替换了字符串中的所有 b。确实是这样,但是他忘记了字符串是不可变的。所有这类方法都返回一个新字符串,而从来不会改变消息的接收者。

4.4 检测器:Null 指针对 null 的解引用(dereference)和冗余比较

这个检测器查找两类问题。它查找代码路径将会或者可能造成 null 指针异常的情况,它还查找对 null 的冗余比较的情况。例如,如果两个比较值都为 null,那么它们就是冗余的并可能表明代码错误。FindBugs 在可以确定一个值为 null 而另一个值不为 null 时,检测类似的错误,如清单 2 所示:

1  Person person = aMap.get("bob");
2  if (person != null) {
3      person.updateAccessTime();
4  }
5  String name = person.getName();

 5 FindBugs安装

名称 备注
Findbugs http://prdownloads.sourceforge.net/findbugs/findbugs-1.3.9.zip?download

6 参考資料

[1] FindBugs - Find Bugs in Java Programs(original site)
http://findbugs.sourceforge.net/
[2] FindBugs Pattern説明
http://www.limy.org/program/java/findbug_patterns.html
[3] FindBugs手册(日語)
http://www.simeji.com/findbugs/doc/manual_ja/

 

 

 


 

 

分享到:
评论

相关推荐

    findbugs 1.3.9 findbugs 1.3.9

    《深入理解FindBugs 1.3.9:静态代码分析的强大工具》 FindBugs是一款广受欢迎的静态代码分析工具,它的版本...通过熟练掌握和应用FindBugs,我们可以更有效地预防和处理代码中的错误,从而打造更可靠的软件产品。

    eclipse中FindBugs_安装使用

    - FindBugs将自动扫描整个项目,并在“Problems”视图中显示检测结果。 - 检测结果通常会按严重程度排序,方便开发者优先处理高风险问题。 - 可以双击具体的问题查看详细信息,包括问题类型、位置等。 2. **在...

    findbugs工具测试java实验报告

    2. **运行FindBugs**:在项目中选择要分析的源代码或编译后的字节码,启动FindBugs分析。分析完成后,工具会生成一个详细的报告,列出所有发现的问题。 3. **分析报告**:FindBugs的报告分为不同的等级,从最高的...

    findbugs-3.0.1.zip

    在"findbugs-3.0.1.zip"这个压缩包中,包含了FindBugs 3.0.1版本的详细资料和软件本身。本文将深入探讨FindBugs的功能、工作原理以及如何利用它来提升代码质量。 1. **FindBugs简介** FindBugs是由University of ...

    FindBugs帮助文档

    在 Eclipse 中安装 FindBugs 很简单,可以通过 Eclipse 的“帮助” -> “Eclipse Marketplace”搜索 FindBugs 并按照提示进行安装。安装完成后,可以在 Eclipse 的“Project Explorer”中右键选择项目,然后点击...

    myeclipse10插件-findBugs

    《MyEclipse10与FindBugs的集成与应用》 在软件开发过程中,代码质量是决定项目成功与否的关键因素之一。为了确保代码的健壮性和可维护性,开发人员通常会采用各种静态代码分析工具来检测潜在的问题。在Java开发...

    findbugs1.3.9

    下面我们将详细探讨FindBugs 1.3.9在Eclipse插件中的应用及其关键特性: 1. **错误分类**:FindBugs 能够识别多种类型的错误,包括可能的空指针异常、未初始化的变量、资源泄漏、并发问题等,并将它们分为不同的...

    findbugs插件

    4. **设置与使用**:一旦FindBugs成功集成,你可以在Eclipse的"Preferences"或"Window -> Preferences"中找到FindBugs的相关设置,根据项目需求调整分析级别、排除规则等。在项目中右键选择"FindBugs",即可运行分析...

    findbugs 最新eclipse插件

    FindBugs是开源项目,由University of Maryland开发并维护,广泛应用于Java应用程序的质量保证过程中。这个插件是findbugs的最新版本,适用于Eclipse集成开发环境,为开发人员提供了方便的集成环境来检查代码质量。 ...

    findbugs-1.3.9.rar

    在实际应用中,FindBugs可以与其他持续集成工具(如Jenkins或Hudson)结合使用,实现自动化代码审查。这有助于保持代码库的整洁,减少因人为错误导致的问题,提高软件的可靠性和稳定性。 总的来说,FindBugs是一个...

    ecplise插件findbugs2.0

    FindBugs 是一款强大的静态代码分析工具,主要用于检测 Java 应用程序中的潜在错误和缺陷。在 2.0 版本中,FindBugs 支持 JDK 1.6,并且能够与 Eclipse 3.2 及以上版本无缝集成,为开发者提供了更为便捷的代码质量...

    findBugs静态代码测试工具

    4. **查看报告**:在"Eclipse Problems"视图中,可以看到`findBugs`检测到的问题,每个问题都有详细的描述、优先级和修复建议。 5. **修复问题**:根据报告,开发者可以逐个修复代码中的问题,通过修改后再次分析,...

    findbugs eclipse插件

    FindBugs将分析项目中的所有类,并在"FindBugs视图"中列出所有发现的问题。 3. **问题分类**:FindBugs报告的问题分为多个等级,如"怀疑错误"(Bug)、"可能错误"(Possibly Error)、"代码异味"(Code Smell)等,...

    findbugs MyEclipse8.6插件以及安装指导

    将FindBugs集成到MyEclipse8.6中,能帮助开发者在编码阶段就发现并修复问题,提高代码质量和可维护性。 **一、FindBugs插件简介** FindBugs通过分析字节码而非源代码来查找可能的错误,它能够检测出多种类型的错误...

    findbugs最新版本 1.3.8

    FindBugs是一款开源的静态代码分析工具,专用于检测Java应用程序中的潜在错误和不良编程习惯。在Java开发中,FindBugs能够帮助开发者在代码执行之前发现潜在的问题,从而提高软件质量和可维护性。1.3.8是FindBugs的...

    findbugs myeclipse2017可用插件

    FindBugs是一款强大的静态代码分析工具,主要用于检测Java应用程序中的潜在错误、不良编程习惯和可能的安全漏洞。在MyEclipse 2017这样的集成开发环境中(IDE)集成FindBugs插件,可以帮助开发者在编码阶段就发现并...

    findBugs学习总结

    在Java编程中,静态代码分析工具是提升代码质量和预防潜在问题的重要手段,其中findBugs是一款备受推崇的开源工具。findBugs通过静态分析技术,能够检测出代码中可能存在的bug,帮助开发者在运行程序之前就发现并...

    findbugs_3.0.1

    在FindBugs 3.0.1版本中,它延续了其一贯的优秀特性,通过对Java代码进行深度扫描,能够精准地找出潜在的缺陷和问题,从而帮助程序员在项目开发早期发现并修复错误,提高软件的质量和稳定性。 FindBugs的主要功能...

    findbugs-3.0.1

    其中,性能提升意味着在大型项目中使用findbugs进行分析时,分析时间会显著减少,这对于持续集成环境尤其有利。错误检测准确性提高则意味着findbugs能更精准地识别出真正的错误,减少了误报的可能性。 此外,...

Global site tag (gtag.js) - Google Analytics