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中的安装及使用
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的使⽤详解前⾔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介绍

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 前⾔转载请声明,转⾃【】,谢谢!项⽬中代码质量,往往需要⽐较有经验的程序员的审查来保证。
但是随着项⽬越来越⼤,代码审查会变得越来越复杂,需要耗费越来越多的⼈⼒。
⽽且程序员的经验和精⼒都是有限的,能审查出问题必定有限。
⽽在对代码质量要求越来越严格的当今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是一个应用比较广泛的开源代码审计工具,如果开发团队利用好了这个工具,能够很大程度上提高软件产品的安全性。
而且重要的是Free。
首先,介绍一下安全审计配置文件的位置,网上都没有这方面的资料,我自己找了几个小时才找到。
这个配置文件不在安装文件夹,也不再Eclipse软件的文件夹,而是在具体项目的工作空间workspace中,具体位置是:workspace\.metadata\.plugins\edu.umd.cs.findbugs.plugin.eclipse\.fbprefs。
(以点开始的文件夹,还这么多层目录,很隐蔽!!!)
这个文件中,选中要审计的项目其配置值会是“TURE”,配置为不审计的项会是“FALSE”。
我们可以通过在工作中逐渐确定哪些安全项一定要检查,哪些不需要检查,确定之后,整个开发团队使用同一个配置文件,从而实现标准化、自动化地审查开发团队的代码。
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是一款由加州大学伯克利分校的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
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使⽤说明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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。