FindBugs简明教程

合集下载

FindBugs帮助文档

FindBugs帮助文档

Product name产品名称Confidentiality level密级FindBugs帮助文档内部公开Product version产品版本Total 29 pages 共29页V1.0FindBugs帮助文档(软件工程部)Prepared by拟制邓爱平36829Date日期2008-10-16Reviewed by 审核人Date 日期Reviewed by 审核人Date 日期Authorized by批准Date日期Huawei Technologies Co., Ltd.华为技术有限公司All rights reserved版权所有侵权必究文档版本 1.1 (2006-03-01) 华为技术有限公司1-1文档版本 1.1 (2006-03-01) 华为技术有限公司1-2修订记录日期文档版本产品版本描述作者2008-10-16 1.0 初稿邓爱平36829文档版本 1.1 (2006-03-01) 华为技术有限公司1-3目录(Contents)1 目的和范围................................................................................................................................... 1-61.1 目的 .............................................................................................................................................. 1-61.2 范围 .............................................................................................................................................. 1-62 FindBugs使用 .............................................................................................................................. 2-62.1 FindBugs简介................................................................................................................................ 2-62.1.1 FindBugs能解决的问题......................................................................................................... 2-62.1.2 同类产品介绍 ....................................................................................................................... 2-92.2 如何安装FindBugs ........................................................................................................................ 2-92.2.1 图形界面/命令行................................................................................................................... 2-92.2.2 安装Eclipse插件................................................................................................................... 2-92.3 如何使用FindBugs ...................................................................................................................... 2-122.3.1 在图形界面下使用FindBugs(JDK1.5上进行)...................................................................... 2-122.3.2 在命令行下使用FindBugs .................................................................................................. 2-152.3.3 在Eclipse下使用FindBugs .................................................................................................. 2-172.3.4 通过ant任务脚本使用FindBugs .......................................................................................... 2-202.4 FindBugs的高级功能................................................................................................................... 2-222.4.1 规则配置............................................................................................................................. 2-222.4.2 使用过滤器......................................................................................................................... 2-222.4.3 FindBugs的局限性.............................................................................................................. 2-232.4.4 FindBugs推行细则.............................................................................................................. 2-243 常见问题FAQ及其解答............................................................................................................ 3-243.1 在Eclipse下在更改了检查出的错误后,为什么无法实时刷新检查结果 ...................................... 3-243.2 在Eclipse下使用FindBugs时,如何将发现的问题显示在Problems视图中................................. 3-243.3 为什么Eclipse插件加载不成功.................................................................................................... 3-253.4 如何配置FindBugs的通过准则.................................................................................................... 3-253.5 为什么在图形界面下使用FindBugs时,关联不到源代码............................................................ 3-253.6 文档胶片中说到的FindBugs帮助文档在什么地方....................................................................... 3-263.7 到什么地方获取FindBugs相关资料............................................................................................. 3-263.8 对于不修改的Bug,怎么给出原因说明....................................................................................... 3-263.9 Findbugs占用大量内存,而且运行时间很长,应该如何缩短运行时间.................................... 3-27文档版本 1.1 (2006-03-01) 华为技术有限公司1-43.10 每个工程目录下的.fbprefs 文件有何作用................................................................................. 3-273.11 Bug Explorer窗口的export有何功能 .......................................................................................... 3-283.12 如何了解findbugs提供的每个规则的含义 ................................................................................. 3-284 参考引用..................................................................................................................................... 4-28文档版本 1.1 (2006-03-01) 华为技术有限公司1-51 目的和范围1.1 目的FindBugs 是一个代码静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。

findbugs在eclipse中的安装及使用

findbugs在eclipse中的安装及使用

Findbugs在eclipse中的安装及使用
1Findbugs插件安装与使用
1.1插件安装
1)点击eclipse菜单栏Help->Eclipse Marketplace搜索关键字findbugs,搜索到插件并点击安装即可,如下图:
2)安装完毕后,点击重启eclipse
1.2使用
1)添加findbugs explorer:选择window->show view->other,选择Bug Exploer,点击“ok”
2)选择要检查的项目,选择project->Build project进行编译
3)选择整个项目或者选择指定的包或者类进行findbug:右键,选择Find Bugs->Find Bugs (之前最好先Clear Bug Markers),此时findbugs会遍历指定的包或者类,进行分析,找出代码bug,然后集中显示在find bugs的bugs explorer 中。

4)在Bug Explorer中能看到检查出来的bug,双击bug就可以在编辑窗口自动打开相关代
码文件并连接到代码片段。

1.3Bug说明
找出的bug有3中颜色,黑色的臭虫标志是分类,红色的臭虫表示严重bug发现后必须修改代码,橘黄色的臭虫表示潜在警告性bug 尽量修改。

IDEA插件FindBugs的使用详解

IDEA插件FindBugs的使用详解

IDEA插件FindBugs的使⽤详解前⾔Findbugs很多⼈都并不陌⽣,Eclipse中有插件可以帮助查找代码中隐藏的bug,IDEA中也有这款插件。

这个插件可以帮助我们查找隐藏的bug,⽐较重要的功能就是查找潜在的null指针。

在编写代码的过程中,我们可能不会⼀直记得检查空的引⽤,在我们测试时可能很难发现问题,但是应⽤上线之后,⾯对⼤量的⽤户,很多问题就会浮现出来。

所以在编码时,使⽤findbugs检查⼀下很有必要。

安装安装完之后,重启studio,会发现左下⾓会出现findbugs的图标可以分析单个⽂件,包下⾯的所有⽂件,整个module下的⽂件,整个project下的⽂件,右键想要分析的⽂件名/包名/module名/project分析完之后就会出现结果⾯板点击对应的item在右边会定位到具体的代码根据需要可以进⾏更改,其中Correctness这个错误使我们重点关注的对象,这⾥⼤多是空指针的错误,根据提⽰进⾏处理。

附:⼀些常见的错误信息Bad practice 代码中的⼀些坏习惯Class names should start with an upper case letter 主要包括类名的命名,以⼤写字母开头Method names should start with a lower case letter ⽅法名以⼩写字母开头Field names should start with a lower case letter 字段名以⼩写字母开头equals()method does not check for null argument equals()⽅法应该检查⾮空Class defines equals() and uses Object.hashCode() ⼀个类覆写了equals⽅法,没有覆写hashCode⽅法,使⽤了Object对象的hashCode⽅法Method ignores exceptional return value ⽅法忽略返回值的异常信息Equals method should not assume anything about the type of its argument equals(Object o)⽅法不能对参数o的类型做任何的假设。

JAVA静态代码质量分析工具FindBugs介绍

JAVA静态代码质量分析工具FindBugs介绍

findbugs.xml和messages.xml两个文件
findbugs.xml的编写
对于每一个新的检测器,在 FindBugs.xml 文件中增加一 个 Detector 元素和一个 BugPattern 元素。 Detector 元素指定用于实现检测器的类以及它是快速还是慢速检测 器。speed 属性的可能值有 slow、moderate 和 fast。 BugPattern 元素指定三个属性。 abbrev 属性定义检测 器的缩写。缩写用于标识用命令行客户运行时检测到的缺 陷。可以用同一个缩写将几个相关的检测器组织到一起。.
准备工作 下载到ant和findbugs。并且配置好它们的环境 变量
编写ant脚本(build.xml)
build.xml部分属性参数说明
class 嵌套元素指定要分析的类。这个元素必须 指定一个location属性,location属性的名字为 archive文件(jar,zip等)、目录或者class文件。 可以为一个findbugs元素指定多个class元素。 auxClasspath 可选的嵌套元素,用于指定要分 析的类所引用的类,但是并不对引用的类进行分 析。 sourcePath 可选的嵌套元素,指定Java源代码 的目录。
Hale Waihona Puke 自定义FindBugs检测器
编写自定义的检测器Detector 项目中需要引入FindBugs的jar文件:findBug.jar 自定义的检测器需要继承OpcodeStackDetector 重写其sawOpcode方法。下面用一个简单的自定义 检测器来说明。此检测器是用来查找项目中有没有 system.out和system.error情况出现的。建议编 写的时候可以先查看FindBugs源代码以查找类似于 你要编写的检测器。

【工利其器】必会工具之(五)FindBugs篇——让工具找出你代码中的bug

【工利其器】必会工具之(五)FindBugs篇——让工具找出你代码中的bug

【⼯利其器】必会⼯具之(五)FindBugs篇——让⼯具找出你代码中的bug 前⾔转载请声明,转⾃【】,谢谢!项⽬中代码质量,往往需要⽐较有经验的程序员的审查来保证。

但是随着项⽬越来越⼤,代码审查会变得越来越复杂,需要耗费越来越多的⼈⼒。

⽽且程序员的经验和精⼒都是有限的,能审查出问题必定有限。

⽽在对代码质量要求越来越严格的当今IT界,这⽆疑是个⽭盾点。

幸运的是,不少公司发布了代码扫描⼯具,来检测代码中存在的问题。

尽管它们⽆法扫描出所有的bug,但仍然能够为我们的⼯作带来极⼤的便利。

其中FindBugs就是这其中的佼佼者,本⽂将结合Android Studio 来介绍该⼯具的使⽤。

⼀、FindBugs简介FindBugs是⼀款Java缺陷检测⼯具,它通过分析静态字节码可以查找出200多种错误模式,例如空指针取消引⽤、⽆限递归循环、Java库的错误使⽤和死锁等。

⼆、安装FindBugs插件Android Studio默认是没有安装FindBugs插件的,需要我们⾃⼰进⾏安装。

所幸Android Studio提供了丰富的插件,可以直接从库插件库中进⾏安装。

当然也可以⾃⼰⼿动从⽹上下载好该插件,然后安装。

这⾥将两种⽅法都简单介绍⼀下。

1、从Android Studio插件库中安装点击⾯板中主菜单Files > Settings > Plugs 就可以进⼊到插件中⼼,如下图所⽰:②处可以输⼊要查找的插件名,如果安装了,并满⾜③处筛选条件,会显⽰在④处列表中。

③处选择筛选范围,④处⽤于显⽰在②处和③处所指定条件下查询到的插件列表,右边的选择框可选中表⽰该插件可以⽤,否则表⽰不可⽤。

⑤处显⽰选择的插件的相关信息⑥处是⼀个⼊⼝,可以跳转去安装JetBrains提供的插件。

⑦处⽤于跳转到从仓库中浏览并安装插件。

⑧处⽤于安转下载到本地的插件。

这⾥我们选择从“Browse Repositories”进⼊安装,进⼊后搜索“FindBugs”会显⽰如下界⾯,我们选择“FindBugs-IDEA”进⾏安装。

代码审计工具Findbugs自动检查CheckList及配置方法

代码审计工具Findbugs自动检查CheckList及配置方法

代码审计工具Findbugs自动检查CheckList及配置方法
代码审计工具Findbugs是一个应用比较广泛的开源代码审计工具,如果开发团队利用好了这个工具,能够很大程度上提高软件产品的安全性。

而且重要的是Free。

首先,介绍一下安全审计配置文件的位置,网上都没有这方面的资料,我自己找了几个小时才找到。

这个配置文件不在安装文件夹,也不再Eclipse软件的文件夹,而是在具体项目的工作空间workspace中,具体位置是:workspace\.metadata\.plugins\edu.umd.cs.findbugs.plugin.eclipse\.fbprefs。

(以点开始的文件夹,还这么多层目录,很隐蔽!!!)
这个文件中,选中要审计的项目其配置值会是“TURE”,配置为不审计的项会是“FALSE”。

我们可以通过在工作中逐渐确定哪些安全项一定要检查,哪些不需要检查,确定之后,整个开发团队使用同一个配置文件,从而实现标准化、自动化地审查开发团队的代码。

Eclipse 插件 FindBugs 使用手册

Eclipse 插件 FindBugs 使用手册

Eclipse 插件FindBugs 使用手册前言:本文介绍如何利用Eclipse 插件FindBugs 优化Java 代码。

本插件是本人在对系统进行代码优化的时候,向迟焕祺同事索取并学习使用的,现在把工具的一些使用方法与大家共享,并把FindBugs提供给大家!感谢迟哥提供良好资源供大家学习、使用!问题提出:当我们编写完代码,做完单元测试等各种测试后就提交正式运行,只能由运行的系统来检测我们代码是否有问题了,代码中隐藏的错误在系统运行的过程中被发现后,然后再来进行相应的修改,那么后期修改的代价就相当高了。

解决方法:现在有很多Java 代码分析工具,FindBugs 中开源项目当中的一个,它可以帮你找到代码中隐藏的一些错误,提升你的代码能力与系统安全可靠性。

FindBugs 介绍FindBugs 是一个可以在Java 程序中发现Bugs 的程序。

它是专门用来寻找处于“Bug Patterns”列表中的代码的。

Bug Patterns 指很有可能是错误的代码的实例。

原文:FindBugs is a program to find bugs in Java programs. It looks for instances of "bug patterns" --- code instances that are likely to be errors.使用FindBugs 至少需要JDK1.4.0 以上版本,FindBugs是平台独立的,可以运行于GNU/Linux、Windows、MacOS X 等平台上。

运行FindBugs 至少需要有256 MB 内存,如果你要分析一个很大的项目,那就需要更加多的内存了。

获取FindBugs 最新版本:/projects/findbugs/files/FinBugs 介绍:/manual/Eclipse 插件links 文件夹方式配置:提示:直接的插件配置方式是使用Eclipse 的Update 方式更新,或者把新下载的插件PlugIn 放在原始的Eclipse 目录下去,这种方式会随着插件的增多而导致插件维护工作量的增加。

findbugs 用法

findbugs 用法

findbugs用法FindBugs是一款由加州大学伯克利分校的Java开发者团队开发的静态代码分析工具,主要用于发现Java代码中的潜在错误和漏洞。

本文将向您介绍FindBugs的基本用法,帮助您更好地利用这款工具提高代码质量。

一、FindBugs简介FindBugs是一款免费的开源工具,它通过分析Java代码的语法、数据流、异常处理等方面,发现潜在的错误和漏洞。

FindBugs可以帮助开发者发现一些不易被人工发现的错误,提高代码质量,减少软件缺陷。

二、安装FindBugs要使用FindBugs,您需要先将其安装到您的系统中。

FindBugs支持Windows、Linux和MacOSX等操作系统。

安装过程相对简单,您可以从FindBugs官方网站下载最新版本的FindBugs,并根据安装指南进行安装。

三、使用FindBugs进行代码分析安装完成后,您可以使用FindBugs对Java代码进行静态分析。

以下是使用FindBugs进行代码分析的基本步骤:1.打开FindBugs分析器界面,将要分析的Java代码文件上传到分析器中。

2.选择要进行静态分析的选项,如是否包含测试代码等。

3.等待分析器进行分析,生成报告。

4.查看分析报告,了解代码中的潜在错误和漏洞。

以下是一些使用FindBugs的常见用法示例:1.查找未使用的变量:FindBugs可以检测到未使用的变量,这可能是由于开发者疏忽或无意中留下的漏洞。

2.查找空指针引用:FindBugs可以检测到可能出现的空指针引用错误,这可能导致程序崩溃或出现不可预期的行为。

3.查找内存泄漏:FindBbugs可以检测到可能的内存泄漏问题,如对象引用未被释放等。

4.查找线程安全问题:FindBugs可以检测到线程安全问题,如并发修改共享数据等。

五、优化FindBugs结果使用FindBugs分析后,您可能会发现一些潜在的问题和漏洞。

对于这些问题和漏洞,您可以采取以下优化措施:1.修复错误:对于发现的错误和漏洞,您应该尽快修复它们,以确保代码的质量和稳定性。

findbugs

findbugs

FingBugs1.Run FindBugs Automatically开关当此项选中后,FindBugs将会在你修改Java类时自动运行,如你设置了Eclipse自动编译开关后,当你修改完Java文件保存,FindBugs就会运行,并将相应的信息显示出来。

当此项没有选中,你只能每次在需要的时候自己去运行FindBugs来检查你的代码。

2.Minimum priority to report选择项这个选择项是让你选择哪个级别的信息进行显示,有Low、Medium、High三个选择项可以选择,很类似于Log4J的级别设置啦。

比如:你选择了High选择项,那么只有是High级别的提示信息才会被显示。

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

你选择了Low选择项,那么所有级别的提示信息都会被显示。

3.Enable bug categories选择项在这里是一些显示Bug分类的选择:Correctness关于代码正确性相关方面的Performance关于代码性能相关方面的Internationalization关于代码国际化相关方面的Multithreaded correctness关于代码多线程正确性相关方面的Style关于代码样式相关方面的Malicious code vulnerability关于恶意破坏代码相关方面的比如:如果你把Style的检查框去掉不选择中它,那么与Style分类相关的警告信息就不会显示了。

其它的类似。

4.Select bug patterns to check for选择项在这里你可以选择所要进行检查的相关的Bug Pattern条目可以从Bug codes、Detector name、Detector description中看到相应的是要检查哪些方面的内容,你可以根据需要选择或去掉相应的检查条件。

找出的bug有3中颜色,黑色的臭虫标志是分类,红色的臭虫表示严重bug发现后必须修改代码,橘黄色的臭虫表示潜在警告性bug 尽量修改。

Findbugs如何使用?Findbugs的使用说明

Findbugs如何使用?Findbugs的使用说明

Findbugs如何使⽤?Findbugs的使⽤说明Findbugs使⽤说明1 ⽤途FindBugs 是⼀个java bytecode静态分析⼯具,它可以帮助java⼯程师提⾼代码质量以及排除隐含的缺陷。

FindBugs检查类或者 JAR ⽂件,将字节码与⼀组缺陷模式进⾏对⽐以发现可能的问题。

有了静态分析⼯具,就可以在不实际运⾏程序的情况对软件进⾏分析。

FindBugs不是通过分析类⽂件的形式或结构来确定程序的意图,⽽是通常使⽤ Visitor 模式进⾏分析(Visitor 模式的更多信息)。

2 安装⽬前findbugs最新的版本是1.3.9,2.1 Eclipse插件的安装环境要求,Findbugs要求Eclipse 3.4 以上的版本,JRE/JDK 1.5.0以上的版本。

步骤,将edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821.zip解压到Eclipse的 "plugins"⼦⽬录下,这样就可以在 <eclipse_install_dir>/plugins/edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821/下看到FindBugs logo图⽚findbugs.png。

启动Eclipse 然后选择 Help → About Eclipse Platform → Plug-in Details,你应该找到 "FindBugs Plug-in"。

3 使⽤启动选中java⼯程,点击⿏标右键,选择名为“Find Bugs”的菜单,FindBugs开始运⾏,问题指⽰器将指向根据bug模式识别出来的潜在问题代码位置。

可选项定制你还可以通过java⼯程的属性对话框来定制findbugs的运⾏⽅式,可选项包括:控制"Run FindBugs Automatically" 开关的checkbox。

Eclipse插件FindBugs安装使用说明

Eclipse插件FindBugs安装使用说明

FindBugs 安装使用FindBugs是个专门用来发现Java代码中的Bug的Eclipse小插件,与Eclipse无缝结合,可以实现敲入代码、保存文件、编译时即时反馈给用户Bug信息,比Eclipse自带的Java Bug 管理功能要强。

FindBugs一共有三个版本,除过Eclipse插件板本外,还提供一个独立版本的Java程序(基于SWing)和一个Ant Task版本;下面介绍Eclipse的插件版。

一、安装打开MyEclipse 的help -> SoftWave Updates -> Find and Install如图:点击next在下图中,点击New Remote site,在弹出的窗口中输入Name:findBugs,URL:/eclipse点击ok然后按下图操作。

点击完成最后按提示安装。

二、配置在工程栏选中一个项目,按Alt + Enter 键三、使用1、对项目使用findBugs选中项目,如下图操作:点击Find Bugs后,findBugs会查找整个项目的bug。

之后,如图操作:在弹出的窗口,如图操作:最后,窗口会按bug的高低级别显示程序bug:2、在编写代码时使用findBugs编写代码时,findBugs会查找bug,并给有bug行一个爬虫logo标示,如下图:点击爬虫图标会显示具体的bug,如下图:Findbugs缺陷描述:Findbugs是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。

Findbugs自带检测器,其中有60余种Bad practice,80余种Correctness,1种Internationalization,12种Malicious code vulnerability,27种Multithreaded correctness,23种Performance,43种Dodgy。

Bad practice 坏的实践一些不好的实践,下面列举几个:HE:类定义了equals(),却没有hashCode();或类定义了equals(),却使用Object.hashCode();或类定义了hashCode(),却没有equals();或类定义了hashCode(),却使用Object.equals();类继承了equals(),却使用Object.hashCode()。

FindBugs详解

FindBugs详解

FindBugs详解Find bugs误报告警的消除⽅法背景介绍在java⼯程中,Find bugs的静态检查能够帮助我们挖掘出代码可能存在的缺陷。

在我实际使⽤的过程中,也确实发现了两处由于“缺少else 分⽀”导致“引⼊未初始化对象”的错误。

与之相对应的是,通过Find bugs也发现四处对象中使⽤静态成员导致Find bugs告警的情况。

通过仔细阅读和分析代码逻辑,可以确认代码本⾝没有问题,这个是属于Find bugs误报的情况。

既然我们打算使⽤Find bugs来做代码的静态检查,那么就有必要保持⼀个⼲净的代码环境,这⾥⾯没有任何的Find bugs告警。

如果确定是代码问题,毫⽆疑问需要马上纠正。

如果确认是Find bugs误报,也应该进⾏消除,以便后续的检查能够基于⼀个⼲净的环境,同样的误报不需要反复确认。

Find bugs告警误报的消除⾮常容易,只需要在两个级别(类级别和⽅法进⾏)加上Find bugs的注解就可以消除。

这⾥建议误报消除尽量在⽅法级别上进⾏,以控制误报消除的范围,最⼤限度放置将真正的代码问题也作为误报给隐藏掉了。

⽅法在⼯程添加注解依赖的jar包:使⽤Find bugs注解需要⽤到两个jar包,annotations.jar和jsr305.jar。

在eclipse中装完Find bugs插件后,在eclipse⽬录下可以找到这两个jar包⽂件。

添加注解:在疑问代码所在的类或者⽅法前⾯添加注解。

其中,value的值就是前⾯提到的find bugs告警信息中的模式,因为value是⼀个数组,所以可以同时添加多个模式。

justification的值是⼀句描述信息,你可以理解为是这条注解的注释,内容可以是任意的。

@edu.umd.cs.findbugs.annotationsSuppressWarnings(value={"NM_CONFUSING"}, justification="remove findbugs")重新运⾏Find bugs进⾏检查:添加完注解后,接下来应该重新运⾏find bugs⼯具进⾏检查,以确定误报已经被消除。

Findbugs安装及使用说明

Findbugs安装及使用说明

Findbugs安装及使用说明安装步骤1.打开eclipse2.Help -> Install New Software3.点击Add,弹出Add Site窗口4.在上图对话框里填写如下:∙Name: findbugs∙Location: /eclipse5.点击OK后,选中“FindBugs”前面的复选框,再点击“Next”进入下一步接下来按照窗口提示操作,直至“Finish”完成安装。

6.在新出来的对话框中,选中findbugs(注意: 此时如果装了Myeclipse插件, 这里可能会报错. 请先在eclipse的links文件夹下面将Myeclipse的link文件移除, 然后等findbugs装完之后, 再将Myeclipse的link文件放进来)7.点击next8.选中”I accept the terms in the license agreement”9.点击Next,然后点击Finish10.最后Install ,Yes (重启eclipse),findbugs安装完成注:不同版本的eclipse,安装时会发现界面(本说明是依据V3.5.2版本进行的),菜单的显示形式可能不同,请灵活应对。

卸载步骤如果您所使用的eclipse版本已经集成了findbugs,建议您删除之后按上述操作步骤进行重新安装,这样确保您安装的是最新版本,据说新版本功能更加强大,能帮助您发现更多更深层次的bug哦~1.打开eclipse2.Help -> Install New Software3.点击’Available Software Sites’4.在弹出的Preferences窗口中选中已存在的’findbugs’,点击Remove,关闭eclipse,5.删除eclipse根目录下原有的与“findbugs”相关内容分别进入plugins和features文件夹下,搜索“findbugs”并删除与“findbugs”相关的文件夹;进入configuration\org.eclipse.equinox.simpleconfigurator,删除“”文件中与“findbugs”相关的内容然后重新启动eclipse。

Findbugs使用文档

Findbugs使用文档

目录一、FindBugs 是什么? (2)二、FindBugs 安装 (3)三、Bug类型注意事项 (6)一、FindBugs 是什么?FindBugs 是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。

有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。

在FindBugs的GUI中,需要先选择待扫描的.class文件(FindBugs其实就是对编译后的class进行扫描,藉以发现一些隐藏的bug)。

如果你拥有这些.class对应的源文件,可把这些.java文件再选上,这样便可以从稍后得出的报告中快捷的定位到出问题的代码上面。

此外,还可以选上工程所使用的library,这样似乎可以帮助FindBugs做一些高阶的检查,藉以发现一些更深层的bug。

选定了以上各项后,便可以开始检测了。

检测的过程可能会花好几分钟,具体视工程的规模而定。

检测完毕可生成一份详细的报告,藉由这份报告,可以发现许多代码中间潜在的bug。

比较典型的,如引用了空指针(null pointer dereference), 特定的资源(db connection)未关闭,等等。

如果用人工检查的方式,这些bug可能很难才会被发现,或许永远也无法发现,直到运行时发作…当除掉了这些典型的(classic) bug后,可以确信的是,我们的系统稳定度将会上一个新的台阶。

二、FindBugs 安装1.进入Eclipse菜单Help→Install New Software,添加站点信息如下:站定地址:/eclipse,安装完毕后重启Eclipse。

2.进入Eclipse菜单Window→Show view→Other,选择Bug Explorer,在主界面上显示bug信息,如下图3.选择需要检查代码错误的目录,比如src目录,在右键菜单里选择Find Bugs FindBugs,插件将自动扫描src目录下面的java文件,寻找bug,需要耗时一段时间,检查结果显示在Bug Explorer窗口下。

FindBugs的使用

FindBugs的使用

FindBugs的使用1 FindBugs简介FindBugs是一个静态分析工具,它检查类或者JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题。

有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。

FindBugs有几种,有的为单机程序版,有的为与Eclipse 相结合的插件版,等等。

本文介绍的就是Java程序员最喜欢的插件版。

2 FindBugs的安装在网上下载FindBugs插件,解压后,直接将解压后的文件(edu.umd.cs.findbugs.plugin.eclipse_3.0.1.20150306-5afe4d1)放到eclipse的dropins目录,然后重启eclipse即可。

右键点击项目,看到Find Bugs出现就可以了。

3 FindBugs在Eclipse的使用在需要静态检查的项目上点击右键,按照上图所示,点击Find Bugs,等待静态检查进度完成。

小瓢虫所在位置即为问题代码所在位置。

检测出的bugs可以到《详解FindBugs的各项检测器》中查找对应原因。

4 FindBugs可以检测的内容FindBugs提供了35个检测器来检测字节码中可能的缺陷。

其可以做的事情主要有:4.1 找出hash equals不匹配找与equals()和hashCode()的实现相关的几个问题。

这两个方法非常重要,因为几乎所有基于集合的类---List、Map、Set等都调用它们。

一般来说,这个检测器寻找两种不同类型的问题:①当一个类重写对象的equals()方法,但是没有重写它的hashCode方法,或者相反的情况时。

②定义一个co-variant版本的equals()或compareTo()方法。

例如,Bob类定义其equals()方法为布尔equals(Bob),它覆盖了对象中定义的equals()方法。

因为Java代码在编译时解析重载方法的方式,在运行时使用的几乎总是在对象中定义的这个版本的方法,而不是在Bob中定义的那一个(除非显式将equals()方法的参数强制转换为Bob类型)。

FindBugs_简明教程

FindBugs_简明教程

FindBugs 简明教程前言:本文重点在FindBugs的入门使用相关的介绍内容请看本文后面的推荐链接FindBugs的使用入门下面将介绍2种方式利用FindBugs去自检代码第一种适用于Eclipse下开发的应用程序第二种适用于Framework层的局部代码准备方面a.FingBugs Eclipse plug-in/eclipseb.FindBugs tools with Swing Interface/findbugs/findbugs-1.3.9.zip?download 1.使用步骤2.1Eclipse下安装FindBugs plug-in1)点击Install New Software 进行安装2)点击Add之后在弹出的地址框中填入FindBugs Plug-in的地址3)将FindBugs Feature勾选并点击Next4)猛点Next5)勾选accept 并点击Finish6)Waiting…7)点击OK8)安装成功后提示重启Eclipse,点击Restart Now2.2Eclipse下使用FindBugs, 在此使用ApiDemo为例1)右键点击工程,点击FindBugs2)FindBugs分析完成后自动跳转到Bug Explorer. 点击一个Bug自动定位到代码行,然后点击代码行最左端的”Bugs”,在Properties中显示该Bug的详细情况建议修改的方式等等(自动生成的R文件相关的可略过)3)点击Windows->Preferences->Java->FindBugs 可配置FindBugs自检规则4)自检完成后可将FindBugs结果以xml的形式保存下来作为凭证2.3利用FindBugs tool自检(适用于局部代码自检例如framework修改的代码在此举例)1)下载FindBugstools with Swing Interface 并解压点进bin下的findbugs.bat2) 将待检代码文件及对应的class文件准备好并导入并点击完成这里拿AbsListView.java举例将out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar 中有关AbsListView的class都拿出来包括内部类3)根据分析结果定位到代码进行修改下面有相关的Bug行数及方法名及变量名2.4运用Findbugs 命令行的方式检查指定的类或者jar命令行常用命令:$FINDBUGS_HOME $/bin/findbugs -textui [options…] <Jar or class file path>Options:-low (Report all bugs)-medium (Report medium and high priority bug. This is the default setting.)-high (Report only high priority bugs.)-xml (Produce the bug reports as XML)-help (displays help information for the FindBugs command line user interface)利用基本基本命令去检查会在命令行中打印每个Bug的信息以行为单位使用了-xml 参数后打印的是xml报告可以将其导入Fingbugs plug-in或者Swing GUI中查看使用命令行的时候为了方便查看及保存可以把结果重定向到文本中FindBugs推荐资料IBM-FindBugs详细说明/developerworks/cn/java/j-findbug1//developerworks/cn/java/j-findbug2/FindBugs官网/Baidu百科FindBugs/view/2367937.htm。

findbugs 用法

findbugs 用法

findbugs 用法摘要:1.Findbugs 简介2.Findbugs 的基本用法3.Findbugs 的高级用法4.Findbugs 的优点和局限性正文:Findbugs 是一款流行的Java 代码审计工具,它可以帮助开发人员找到代码中的潜在问题和安全漏洞。

下面我们将详细介绍Findbugs 的基本用法和高级用法。

一、Findbugs 基本用法1.安装Findbugs首先,需要在电脑上安装Findbugs。

可以访问Findbugs 官网下载最新版本,然后按照提示进行安装。

2.编写Java 代码在使用Findbugs 进行代码审计之前,需要编写一段Java 代码。

这段代码可以是现有的项目代码,也可以是新编写的代码。

3.运行Findbugs在安装完Findbugs 后,可以通过命令行工具运行它。

在命令行中输入以下命令:```findbugs -x <path_to_your_java_code>```其中,`<path_to_your_java_code>`表示你的Java 代码所在的路径。

4.查看Findbugs 输出结果Findbugs 运行后,会在命令行中输出审计结果。

审计结果包括找到的潜在问题和安全漏洞的详细信息。

二、Findbugs 高级用法1.配置FindbugsFindbugs 提供了丰富的配置选项,可以根据实际需求进行配置。

以下是一些常用的配置选项:- `-X 不堪设想`:启用Findbugs 的高级功能。

- `-Xmultithread`:启用多线程审计。

- `-Xnoescape`:关闭Findbugs 的ESCAPE 机制。

2.编写自定义规则Findbugs 支持编写自定义规则,可以根据实际需求编写适合自己的规则。

规则文件需要以`.find`为扩展名,放在`findbugs-rules`目录下。

3.使用插件Findbugs 支持插件,可以通过插件扩展Findbugs 的功能。

FindBugs错误分析说明

FindBugs错误分析说明

FindBugs 错误修改指南版本号 修改描述 作者 日期1.0 新建 cantellow 2011-5-241.1 补充英文标识及出错案例 卫缺 2011-6-9使用方法:复制你的Pattern id ,然后用快捷键Ctrl + F 查找,即可快速定位。

所有的解释和解决方式只是可能和建议,大多数时候需要根据实际情况而定。

Findbugs 也有少量的误报,需要大家自己甄别。

1. EC_UNRELATED_TYPESBug: Call to equals() comparing different typesPattern id: EC_UNRELATED_TYPES, type: EC, category: CORRECTNESS 解释:两个不同类型的对象调用equals 方法,如果equals 方法没有被重写,那么调用object 的==, 永远不会相等;如果equals 方法被重写,而且含有instanceof 逻辑,那么还是不会相等。

解决方法:应该改为str.toString()2. IM_BAD_CHECK_FOR_ODDBug: Check for oddness that won't work for negative numbers Pattern id: IM_BAD_CHECK_FOR_ODD, type: IM, category: STYLE 解释:如果row 是负奇数,那么row % 2 == -1, 解决方法:考虑使用x & 1 == 1或者x % 2 != 0Class doesn't override equals in superclassFindBugsÌ«ÉñÆæÁË~~3. NP_ALWAYS_NULLPattern: Null pointer dereferenceid: NP_ALWAYS_NULL, type: NP, category: CORRECTNESSA null pointer is dereferenced here. This will lead to a NullPointerException when the code is executed.4. RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUEBug: Redundant nullcheck of bean1, which is known to be non-nullPattern id: RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE, type: RCN, category: STYLEThis method contains a redundant check of a known non-null value against the constant null.这种方法包含了一个称为非空对空值的不断重复检查。

FindBugs安装及使用说明

FindBugs安装及使用说明

FindBug安装及使用说明目录1.简介 (3)1.1说明 (3)1.2环境要求 (3)1.3注意事项 (3)2.FINDBUGS安装 (3)2.1在线安装 (3)2.2离线安装 (9)3.FINDBUGS使用 (10)3.1F IND B UGS操作 (10)3.2F IND B UGS常见故障模式 (11)3.2.1NP_NULL_ON_SOME_PATH: Possible null pointer dereference (11)3.2.2DLS_DEAD_LOCAL_STORE: Dead store to local variable (11)3.2.3BX_BOXING_IMMEDIATELY_UNBOXED: Primitive value is boxed and then immediately unboxed .. 123.2.4DM_NUMBER_CTOR: Method invokes inefficient Number constructor; use static valueOf instead 123.2.5Cloneable Not Implemented Correctly (CN) (12)3.2.6OBL_UNSATISFIED_OBLIGATION: Method may fail to clean up stream or resource (12)3.2.7Double Checked Locking (DC) (13)3.2.8Dropped Exception (DE) (14)3.2.9Suspicious Equals Comparison (EC) (14)3.2.10Bad Covariant Definition of Equals (Eq) (15)3.2.11Equal Objects Must Have Equal Hashcodes (HE) (15)3.2.12Static Field Modifiable By Untrusted Code (MS) (15)3.2.13Null Pointer Dereference (NP), Redundant Comparison to Null (RCN) (16)3.2.14Non-Short-Circuit Boolean Operator (NS) (17)3.2.15Open Stream (17)3.2.16Read Return Should Be Checked (RR) (17)3.2.17Return Value Should Be Checked (RV) (18)3.2.18Non-serializable Serializable class (SE) (18)3.2.19Uninitialized Read In Constructor (UR) (18)3.2.20Unconditional Wait (UW) (19)3.2.21Wait Not In Loop (Wa) (19)1.简介1.1说明FindBugs 是一个java bytecode静态分析工具,它可以帮助java工程师提高代码质量以及排除隐含的缺陷。

FindBugs使用手册

FindBugs使用手册

文件编号:配置项编号:FindBugs使用手册文档版本号V 1.0农信银资金清算中心创新研发部文档修订记录目录1、FindBugs简介 (4)2、FindBugs的检查规则 (4)2.1Correctness(正确性) (4)2.2 Bad practice(不良实践) (5)2.3 Performance(性能) (5)2.4Multithreaded correctness(多线程正确性) (6)2.5 Dodgy(不可靠) (7)3、FindBugs使用 (8)3.1安装FindBugs (8)3.2配置FindBugs (8)3.3使用FindBugs (8)1、FindBugs简介FindBugs是用于java代码检查的一种静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。

有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。

FindBugs专注于找出潜在程序错误,而不是编码风格问题,目的在于提高程序的健壮性。

2、FindBugs的检查规则FindBugs提出了超过200种规则,这些规则可主要分为如下类别:2.1Correctness(正确性)这些问题涉及到可能在某些方面不正确的代码。

如:代码有无限递归,或者读取为写入的字段,这类问题几乎无疑是程序的错误。

例1:使用未初始化的类成员,可能导致NullPointException代码:FindBugs检测结果:例2:不使用方法的返回值代码:FindBugs检测结果:2.2Bad practice(不良实践)这类问题明确违反建议的编程标准。

如:删除异常,或未关闭文件,或未数据库连接资源等。

例3:未关闭打开的文件输出流资源代码:FindBugs检测结果:2.3Performance(性能)这类规则的目的在于检测潜在的性能问题。

如:代码创建了不需要的对象,或者在循环中使用字符串连接而不是使用StringBuffer。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FindBugs 简明教程
前言:
本文重点在FindBugs的入门使用
相关的介绍内容请看本文后面的推荐链接
FindBugs的使用入门
下面将介绍2种方式利用FindBugs去自检代码
第一种适用于Eclipse下开发的应用程序
第二种适用于Framework层的局部代码
准备方面
a.FingBugs Eclipse plug-in
b.FindBugs tools with Swing Interface
/findbugs/findbugs-1.3.9.zip?download
1.使用步骤
2.1Eclipse下安装FindBugs plug-in
1)点击Install New Software 进行安装
2)点击Add之后在弹出的地址框中填入FindBugs Plug-in的地址
3)将FindBugs Feature勾选并点击Next
4)猛点Next
5)勾选accept 并点击Finish
6)Waiting…
7)点击OK
8)安装成功后提示重启Eclipse,点击Restart Now
2.2Eclipse下使用FindBugs, 在此使用ApiDemo为例
1)右键点击工程,点击FindBugs
2)FindBugs分析完成后自动跳转到Bug Explorer. 点击一个Bug自动定位到代
码行,然后点击代码行最左端的”Bugs”,在Properties中显示该Bug的详
细情况建议修改的方式等等(自动生成的R文件相关的可略过)
3)点击Windows->Preferences->Java->FindBugs 可配置FindBugs自检规则
4)自检完成后可将FindBugs结果以xml的形式保存下来作为凭证
2.3利用FindBugs tool自检(适用于局部代码自检例如framework修改的代码在此举
例)
1)下载FindBugstools with Swing Interface 并解压
点进bin下的findbugs.bat
2) 将待检代码文件及对应的class文件准备好并导入并点击完成
这里拿AbsListView.java举例
将out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar 中有关AbsListView的class都拿出来包括内部类
3)根据分析结果定位到代码进行修改下面有相关的Bug行数及方法名及变量名
2.4运用Findbugs 命令行的方式检查指定的类或者jar
命令行常用命令:
$FINDBUGS_HOME $/bin/findbugs -textui [options…] <Jar or class file path>
Options:-low (Report all bugs)
-medium (Report medium and high priority bug. This is the default setting.)
-high (Report only high priority bugs.)
-xml (Produce the bug reports as XML)
-help (displays help information for the FindBugs command line user interface)
利用基本基本命令去检查会在命令行中打印每个Bug的信息以行为单位
使用了-xml 参数后打印的是xml报告可以将其导入Fingbugs plug-in或者Swing GUI中查看使用命令行的时候为了方便查看及保存可以把结果重定向到文本中
FindBugs推荐资料
IBM-FindBugs详细说明
FindBugs官网
Baidu百科FindBugs。

相关文档
最新文档