`
liangjian103
  • 浏览: 177526 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用FindBugs分析代码漏洞

阅读更多

  hyddd原创,转载请说明!

  FindBugs是一个专门分析JAVA代码问题的静态代码扫描工具,它是由一位马里兰大学的博士写的,官方网站是:http://findbugs.sourceforge.net/index.html,里面有FindBugs工具的下载,并且也包含了那位博士写的关于静态代码分析引擎的一些论文,不过偶还没看。FindBugs可以发现的问题包括:多线程竞争问题,性能问题,安全问题,代码规范......这些下面我都会详细介绍:>,如果想了解更多关于其他语言的静态代码扫描工具信息,可以参考《[hyddd安全性测试笔记2]浅淡静态代码分析工具》。

一.FindBugs的使用

  先说说FindBugs的使用,FindBugs它提供两种工具形式,一种是界面形式的工具,如下图:

  

  另外一种是以Eclipse插件的形式提供的:

  

  个人比较喜欢插件的形式,方便~!

  下面简单介绍FindBugs插件的使用:

  1.右键项目Pop Menu->Find Bugs->Find Bugs,如图:

  

  2.把FindBugs插件的3个功能WorkSpace导出,如图:

  

  (1). Bug Explorer:这里显示的是用FindBugs对这个项目扫描的结果。现在只扫出了一个类型的BUG,同时这个类型的BUG数量为1(见图中括号)。继续打开[DLS]Dead store to local variable,选择其中一项,右键单击,选择Pop Menu中的“Show Bug Details”,我们便会跳转到Bug Details这个WorkSpace。

  

  (2).Bug Details:这里是对BUG问题的描述,包括:Bug类别及程度,Bug的定位,对Bug的解释。

  

  这里这个Bug类别是Dodgy,程度是中等;双击下面会自动定位BUG的位置;最下面是这个BUG的解释,可以根据里面的提示去修改代码:>

  (3).Bug User Annotations:记录一些自己添加的评注。

二.FindBugs的Bug类型及实例代码:

  FindBugs对BUG的解释在官网有详细的说明:http://findbugs.sourceforge.net/bugDescriptions.html#IS2_INCONSISTENT_SYNC。虽然有说明,但说明一般比较简短,而且没有Demo代码,有时候还真没明白它说什么意思:<,所以在这里我打算整理一下之前看过的资料,把问题和解决方案记录下来

Bad practice:

[Hight]

[H B BC] Random object created and used only once

[Medium]

[M B Nm] Method names should start with a lower case letter

[M B Nm] Class names should start with an upper case letter

[M B ODR] Method may fail to close database resource

[M B DE] Method might ignore exception

Correctness:

[Hight]

[H C FS] More arguments are passed that are actually used in the format string

[H C FS] Format string references missing argument

[H C EC] equals() used to compare array and nonarray

[Medium]

[M C RCN] Nullcheck of value previously dereferenced

[M C NP] Method call passes null for unconditionally dereferenced parameter

[M C NP] Possible null pointer dereference

[M B Eq] Class defines compareTo(...) and uses Object.equals()

Experimental:

[Medium]

[M X OBL] Method may fail to clean up stream or resource 

Internationalization:

......

Malicious code vulnerability:

[Medium]

[M V EI2] May expose internal representation by incorporating reference to mutable object

[M V EI] May expose internal representation by returning reference to mutable object

[M V MS] Public static method may expose internal representation by returning array

Multithreaded correctness:

[Medium]

[M M IS] Inconsistent synchronization

[M M IS] Inconsistent synchronization追加说明

[M M NP] Synchronize and null check on the same field

Performance:

[Medium]

[M P Bx] Method invokes inefficient Number constructor; use static valueOf instead

[M P Dm] Method invokes toString() method on a String

[M P UuF] Unused field

Security:

[Medium]

[M S XSS] Servlet reflected cross site scripting vulnerability

Dodgy:  

[Medium]

[M D RCN] Repeated conditional tests

[M D RCN] Redundant nullcheck of value known to be non-null

[M D DLS] Dead store to local variable

[M D REC] Exception is caught when Exception is not thrown

[M D ICAST] Result of integer multiplication cast to long

.......

-----------------------------------------------------------------

三.参考文档

1.http://blog.csdn.net/axzywan/archive/2008/11/16/3312009.aspx

2.http://www.cnitblog.com/weitom1982/archive/2006/03/31/8367.html

3.http://www.ibm.com/developerworks/cn/java/j-jtp06294/

4.http://leewinq.javaeye.com/blog/283813

 

以后慢慢加上去,尽量补全......

我对Java不是太熟悉,可能会有错漏,欢迎交流:>

 

 

作者:hyddd
出处:http://www.cnblogs.com/hyddd/
本文版权归作者所有,欢迎转载,演绎或用于商业目的,但是必须说明本文出处(包含链接)。

分享到:
评论

相关推荐

    用FindBugs提高代码质量.doc

    FindBugs内置了多种检测器,包括针对坏的编程习惯(Bad practice)、正确性问题(Correctness)、国际化(Internationalization)、恶意代码漏洞(Malicious code vulnerability)、多线程正确性(Multithreaded ...

    findbugs-3.0.1.zip

    《FindBugs 3.0.1:Java代码静态分析工具深度解析》 FindBugs是一款广受欢迎的开源工具,用于检测Java代码中的潜在错误和不良编程习惯。在"findbugs-3.0.1.zip"这个压缩包中,包含了FindBugs 3.0.1版本的详细资料和...

    网络上搜集的Findbugs在Ant下的配置方法

    FindBugs是一款开源的静态代码分析工具,主要用于检测Java代码中的潜在错误、坏味道和安全漏洞。它通过分析字节码而非源代码,能够发现许多编译器无法捕获的问题。在Ant构建环境中集成FindBugs,可以帮助开发者在...

    findbugs-1.3.9 java代码检查工具以及eclipse插件

    在Eclipse中,安装FindBugs插件后,开发者可以在项目中运行FindBugs分析,插件会以颜色高亮的形式标记出有问题的代码行,并提供详细的错误描述和建议的解决方案。 FindBugs 1.3.9版本提供的检查类别包括: 1. **...

    FindBugs安装及配置使用说明

    FindBugs是一款强大的Java字节码静态分析工具,它能够帮助开发者在代码执行前发现潜在的缺陷和质量问题。通过检查类文件和JAR包,FindBugs与一系列预定义的缺陷模式进行匹配,从而找出可能存在的问题。这种静态分析...

    sonar-findbugs插件源码

    SonarQube是一款知名的代码质量管理工具,它可以帮助开发者检测代码中的潜在问题,包括代码异味、错误和漏洞。FindBugs是SonarQube中的一个重要插件,专门用于静态分析Java代码,查找可能的bug和设计问题。源码分析...

    FindBugs帮助文档

    FindBugs 是一个开源的静态代码分析工具,专门用于检测 Java 代码中的潜在错误和不良编程习惯。这款工具最初是由 University of Maryland 开发的,后来被 Oracle 收购并成为 Eclipse 插件的一部分。FindBugs 的目标...

    findbugs myeclipse2017可用插件

    通过在开发过程中定期运行FindBugs分析,开发者可以及时发现并修复问题,避免在后期出现难以预料的运行时错误。这不仅减少了调试时间,也有助于构建更稳定、更可靠的软件系统。因此,对于任何使用Java进行开发的团队...

    findbugs安装及使用手册

    FindBugs是一款强大的静态代码分析工具,主要用于检测Java代码中的潜在错误、坏味道和安全漏洞。这个安装及使用手册将帮助开发人员在编码阶段就能发现并修复问题,从而提高代码质量和可维护性。 1. **FindBugs简介*...

    findbugs插件eclipse

    "findbug安装.doc"文档可能包含了详细的安装步骤和注意事项,而"使用文档.doc"则可能涵盖了如何使用FindBugs进行代码分析、解读分析结果、设置首选项等内容。这两份文档对于初学者来说是非常宝贵的参考资料,可以...

    findbugs-1.3.9.tar.zip

    FindBugs是一款强大的开源代码静态分析工具,其1.3.9版本的发布为开发者提供了一种高效、全面的方式来检测Java程序中的潜在错误和不良编程习惯。它通过扫描字节码而非源代码,能够在不运行程序的情况下找出可能的...

    Jenkins 与findbugs集成

    FindBugs是一款用于检测Java代码中潜在错误和漏洞的静态分析工具,它可以有效地帮助开发者在早期阶段发现并修复问题。将Jenkins与FindBugs集成起来,可以在每次构建时自动执行FindBugs检查,从而确保代码质量。 ###...

    findbugs-3.0.1

    使用FindBugs 3.0.1进行代码质量检查,开发者可以: 1. **预防bug**:通过提前发现并修复潜在问题,减少因bug导致的系统崩溃或功能异常。 2. **提升代码质量**:遵循最佳实践,避免不良编程习惯,提高代码可读性...

    FindBugs规则(中文版111).doc

    FindBugs是一款静态代码分析工具,它用于检测Java代码中的潜在缺陷。中文版的FindBugs规则文档提供了关于代码质量的多个方面的指导,包括安全、实验性等方面的问题。以下是这些规则的详细解释: 1. Dm: Hardcoded ...

    findbugs1.3.9插件

    FindBugs是一款著名的静态代码分析工具,特别针对Java编程语言设计,它能够帮助开发者在程序运行前找出潜在的问题,如错误、漏洞和不良编程习惯。本文将深入探讨FindBugs 1.3.9版本,包括其功能特性、安装过程以及...

    Gradle平台集成静态代码检查(findbugs,pmd,checkstyle)

    - **findbugs任务配置**:配置了findbugs任务来执行Findbugs分析,其中包括了工具版本、是否忽略失败、分析努力程度、报告级别、处理的类文件、源代码树以及报告输出位置。 - **checkstyle任务配置**:定义了...

    FindBugs插件的安装及使用方法.docx

    FindBugs是一款用于静态分析Java代码的工具,它可以帮助开发者在早期阶段发现潜在的错误和漏洞,从而提高软件的质量和可靠性。FindBags通过扫描类文件或JAR文件来查找可能存在的问题,这些问题包括但不限于空指针...

    查找项目中的bug,快捷查找项目中的bug及代码漏洞

    在`findbugs-3.0.1`版本中,它提供了大量预定义的检查规则,能够分析代码并报告可能存在的bug和漏洞,从而帮助开发者提前预防和解决可能出现的问题。以下是FindBugs的一些主要特点和功能: 1. **静态分析**:...

    findbugs 3.0.2 2016-8月最新版本

    FindBugs是一款开源的静态代码分析工具,专用于检测Java代码中的潜在错误和不良编程习惯。3.0.2是2016年8月发布的一个版本,它为开发者提供了强大的代码质量保证功能,帮助他们在编码阶段就发现并修复问题,从而提升...

    myEclipse配置FindBugs详解

    4. 接下来,右键点击目标工程,选择`FindBugs -&gt; Find Bugs`,FindBugs将开始分析代码,查找潜在的问题。 5. 要查看分析结果,可以通过`Windows -&gt; Show View -&gt; Others`,在弹出的列表中选择`Bug Explorer`。 在...

Global site tag (gtag.js) - Google Analytics