2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

FindBugs 1.3.9 发布了

  • 2009-09-25
  • 本文字数:1805 字

    阅读完需:约 6 分钟

由马里兰大学 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

2009-09-25 13:432828
用户头像

发布了 88 篇内容, 共 268.5 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

【架构实战营】第一模块作业

烟雨濛濛

【架构实战营】第一模块总结

烟雨濛濛

架构实战营

架构实战营第一模块课程总结

Vic

架构实战营

模块1

Chris Cheng

架构实战营

配置中的动态代码

顿晓

配置化开发 Function 4月日更 动态函数

Redis 数据倾斜和集群内通信开销

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

优雅编程:JavaScript代码优化常见的3个小技巧

devpoint

map reduce 空值运算符 filter 扩展运算符

[架构实战营][0期]模块1作业

张民

架构实战营

go每日一库 [cmd]

happlyfox

Go 语言 4月日更

架构实战营模块一作业

En wei

架构实战营

Spark数据倾斜解决方案实战(一)

小舰

4月日更

K8S行业调研报告出炉:混合云、边缘计算走向主流

Rancher

容器的生命周期状态变化

耳东@Erdong

容器 4月日更

当你的内心归于平静,美好便会悄然而至

小天同学

自我思考 个人感悟 个人总结 4月日更

Git命令大全,Git基本了解

Chalk

git 学习 4月日更

架构实战营-M01H

b1a2e1u1u

架构实战营

中文文档持续迭代,内容更丰富,入口更简明!

Rancher

聪明人的训练(四)

Changing Lin

4月日更

架构实战营 - 模块一作业

凯迪

架构实战营

架构师训练营大作业二

潘涛

架构师训练营 4 期

Java 代理使用与原理

Yangjing

cglib JDK代理 代理原理

人人矿场帮助用户轻松获取算力

DT极客

像智能手机一样造车,可能吗?

脑极体

Redis数据结构zset详解:范围查找

程序员架构进阶

redis 源码分析 Zset 28天写作 4月日更

u盘偷猎系统源代码

赫鲁小夫

4月日更

模块一作业

Presley

Linux awk命令

一个大红包

4月日更

架构师训练营大作业一

潘涛

架构师训练营 4 期

架构实战营第一模块命题作业

Vic

架构实战营

deno + Vite 会碰撞出什么样的火花呢?

Viktor

deno vite

架构实战营-模块1-作业

笑春风

架构实战营

FindBugs 1.3.9发布了_Java_Charles Humble_InfoQ精选文章