由马里兰大学Bill Pugh教授开发的FindBugs是一个开源的(LGPL)静态代码分析工具(无需运行就能对代码进行分析的工具),目的是找出Java代码中的常见缺陷。现在使用FindBugs的人越来越多了,很多知名企业包括美国银行、eBay、Oracle、Sun Microsystems以及Google等都在使用FindBugs,此外Bill Pugh还是Google的访问学者。
Findbugs主要着眼于寻找代码中的缺陷,这就与其他类似工具有些区别了,比如说Checkstyle和PMD就是根据样式(style)来改进代码质量的。FindBugs分析引擎与Checkstyle和PMD也有所不同,因为它直接操作类文件(class文件)而不是源代码。我们可以通过命令行、各种构建工具(如Ant、Cruise Control、Hudson及Maven等)、独立的Swing GUI或是以Eclipse和NetBeans IDE插件的方式来运行FindBugs。输出结果既可以是XML的,也可以是文本形式的。目前的FindBugs分析引擎已经对大约300个不同的bug模式进行过测试。完成这个工作的检测器也是非常直观的,同时该软件还支持插件架构,这样开发者就可以增加自己的检测器了。与PMD通过模式语言来描述bug不同,FindBugs的检测器是用Java开发的。
开发者可以通过多种方式来使用静态代码分析工具,最常见的两个使用场景分别是在新编写模块的代码审查上以及对现有代码进行更大范围的审查上。这两个使用场景其实是有很大区别的。对于前一种情况,开发者通常会检查工具所发现的有疑问的代码,然后去修改代码(即便这个问题对应用本身并没有什么影响时也是如此)。与此相反,在审查已有代码时,由于代码已经处于产品阶段且并没有造成什么明显的问题,开发者在修改之前需要先熟悉一下代码,因此其修改代价就很高了。FindBugs分析引擎一直在持续地改进,同时新的1.3.9版中还添加了12个新的检测器,自从1.3.9之后FindBugs就开始重点解决第二种情况了。比如说,FindBugs总是将每一种bug模式划分到某个类别中,如正确性、最差实践、性能与国际化等,然后为其指定高、中、低优先级。对于开发者来说,可以通过这种方式从庞大的代码中过滤掉那些不重要的缺陷。这个概念在1.3.9版中得到了扩充:增加了bug级别(1—20)以及根据级别进行过滤的能力。即将于今年底发布的2.0版还可以根据用户自己定制的优先级来客户化bug级别信息。
FindBugs 2.0的一个重要特性就是社区审查,意思就是说任何人都能检查开源项目中的问题(比如说将其标识成“必须解决”或是“没什么问题”等),同时这些审查信息会持久化到一个中央存储中,而其他审查者则可以自动共享这些内容。我们可以通过FindBugs站点来获取该功能的早期beta版,其上的一个Java Web Start应用显示了对Sun JDK 7以及Eclipse 3.5(Java 1.5+)的审查结果,同时该功能也通过了Google的考核,正如FindBugs主页上所说:
今年5月13、14日这两天,Google专门针对UMD FindBugs静态代码分析工具举办了一个全球大会,用以找出Java软件中的代码问题。此次大会的重心在于让Google的工程师们决定FindBugs所找出的Google4,000个最高优先级问题中所需修复的问题。700多个工程师运行了FindBugs。其中250多个工程师检查了8,000多个问题。每个检查其实就是对问题的一种分类:必须修复、应该修复、没什么影响、并非bug以及其他几个类别。其中有超过75%的检查将问题标为必须修复、应该修复或是我会修复。其中每个问题都被检查了10遍以上。
这些工程师们已经提交的变更修正了3,800个问题当中的1,100多个,他们提出了1,700个bug报告,其中的600个已经被标示为修复。随后人们继续对这些问题加以讨论并打算将FindBugs集成到Google的软件开发过程当中。
此次大会还展示了FindBugs的一些新功能:以云计算与社交网络为背景。对问题的审查会被立刻持久化到中央存储当中,这样其他开发者也能看到这些问题了,同时FindBugs还被集成到了Google的内部工具当中以查看bug报告及浏览源代码的版本控制历史。对于此次大会来说,FindBugs被设置为这样一种模式:工程师只有进入到自己的审查后才能查看别人的审查结果,之后配置又被改成更加开发的形式:工程师无需提供自己的审查结果就能查看别人的了。
静态代码分析工具并非银弹,其他的一些技术比如设计、代码审查以及测试等也非常重要,但如果恰当使用的话无论对个人还是项目来说都会收到意想不到的效果。
查看英文原文:Bill Pugh Releases FindBugs 1.3.9
分享到:
相关推荐
《深入理解FindBugs 1.3.9:静态代码分析的强大工具》 FindBugs是一款广受欢迎的静态代码分析工具,它的版本1.3.9在软件开发领域具有重要的地位。这款开源工具的主要功能是检测Java代码中的潜在错误,帮助开发者在...
在2009年08月21日发布的版本1.3.9中,FindBugs 提供了对Eclipse集成开发环境(IDE)的支持,具体表现为edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821.zip这个插件。 该插件的引入极大地增强了Eclipse开发者的...
《FindBugs1.3.9插件:自动检测Java代码问题的利器》 FindBugs是一款著名的静态代码分析工具,特别针对Java编程语言设计,它能够帮助开发者在程序运行前找出潜在的问题,如错误、漏洞和不良编程习惯。本文将深入...
在findbugs-1.3.9.rar这个压缩包中,包含了FindBugs 1.3.9版本的所有文件和资源。 FindBugs的核心优势在于其强大的分析引擎,它能够识别出多种类型的代码问题,包括空指针异常、未初始化的变量、内存泄漏、线程安全...
**Eclipse代码质量检测插件FindBugs 1.3.9** FindBugs是一款针对Java源代码的质量检测工具,其主要功能是通过静态分析技术找出潜在的代码问题,包括错误、性能瓶颈以及可能的设计缺陷。这个插件的版本1.3.9是专门为...
《Eclipse插件FindBugs-1.3.9在MyEclipse中的应用与实践》 FindBugs是一款开源的静态代码分析工具,专用于检测Java程序中的潜在错误。其1.3.9版本,被广大开发者昵称为“天涯浪子”,在Eclipse集成开发环境中扮演着...
FindBugs-1.3.9是FindBugs项目的其中一个稳定版本,发布于2011年。这个版本包含了大量的bug修复和性能优化,提升了对Java 6和7的支持,并引入了一些新的检测规则。在这个版本中,FindBugs能够检测出超过250种可能的...
总之,FindBugs 1.3.9是Java开发者的一个有力助手,通过其强大的分析功能和Eclipse插件的便利性,可以帮助我们编写更健壮、更安全的代码。尽管现在已经有了更新的版本,如SpotBugs(FindBugs的后续项目),但1.3.9...
FindBugs是一款强大的开源代码静态分析工具,其1.3.9版本的发布为开发者提供了一种高效、全面的方式来检测Java程序中的潜在错误和不良编程习惯。它通过扫描字节码而非源代码,能够在不运行程序的情况下找出可能的...
标题中的三个压缩包文件分别是`findbugs-1.3.9.tar.gz`、`protobuf-2.5.0.tar.gz`和`snappy-1.1.1.tar.gz`,它们各自代表了不同的开源工具或库,分别在软件质量检测、数据序列化和数据压缩方面发挥着重要作用。...
赠送jar包:findbugs-annotations-1.3.9-1.jar; 赠送原API文档:findbugs-annotations-1.3.9-1-javadoc.jar; 赠送源代码:findbugs-annotations-1.3.9-1-sources.jar; 包含翻译后的API文档:findbugs-...
赠送jar包:findbugs-annotations-1.3.9-1.jar; 赠送原API文档:findbugs-annotations-1.3.9-1-javadoc.jar; 赠送源代码:findbugs-annotations-1.3.9-1-sources.jar; 赠送Maven依赖信息文件:findbugs-...
版本1.3.9是该插件的一个稳定版本,发布于2009年8月21日,包含了多项改进和修复。 二、Findbugs Eclipse Plugin功能 1. 实时检测:在编写代码的同时,Findbugs会自动分析新添加或修改的代码,即时显示可能的问题。...
检测java programing中容易陷入的bug pattern,equals() 实现时的一般规约违反 Null pointer的参照 ,Method的返回值的check遗漏 ,初始化前field的访问, Multi-thread的正确性, 同期化处理的矛盾, 无条件的wait...
【findBugs Eclipse 插件离线安装指南】 在软件开发过程中,代码质量是至关重要的。FindBugs 是一个开源的静态代码分析工具,专门用于检测 Java 代码中的潜在错误和不良实践。它能帮助开发者在运行代码之前找出可能...
本文将详细介绍FindBugs 1.3.9版本中的部分规则,主要涉及安全性和编码实践方面。 #### 安全性相关规则 ##### Dm:Hardcoded constant database password (DMI_CONSTANT_DB_PASSWORD) **描述**: 在代码中硬编码...
java运行依赖jar包
FindBugs的最新版本为1.3.9,支持Eclipse 3.4及以上版本和JRE/JDK 1.5.0以上版本。具体安装步骤如下: 1. **下载并解压插件**:首先下载`edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821.zip`文件,并将其解压...
解压缩后,将其放置在合适的位置,例如Windows平台下的D:\findbugs-1.3.9。 3.2 配置Ant 将FindBugs的lib目录下的findbugs-ant.jar复制到Ant的lib目录中,然后在Ant的build.xml文件中添加FindBugs任务定义,指定...