时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

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:432880
用户头像

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

关注

评论

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

音乐 NFT 软件系统的上线

北京木奇移动技术有限公司

数字藏品 软件外包公司 音乐NFT

鸿蒙NEXT实战:打造全能文件管理器应用

最新动态

2015年漏洞实验室课程公告 - CanSecWest与SyScan技术研讨会

qife122

漏洞利用 内核漏洞 内核漏洞模糊测试

面试官:Dify如何调用外部程序?

王磊

中昊芯英登上中央电视台《新闻联播》头条

科技热闻

中昊芯英荣登人社部评选“最具成长潜力的留学人员创业企业”

科技热闻

面向多模态感知与反思的智能体架构Agentic AI的实践路径与挑战

申公豹

Agentic

Golang基础笔记十三之context

Hunter熊

Go 后端 Context 超时控制 传递数据

基于YOLOv8的太阳能电池片缺陷检测项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

云文档系统(源码+文档+讲解+演示)

深圳亥时科技

三文带你轻松上手鸿蒙的 AI 语音 02-声音文件转文本

最新动态

鸿蒙开发中与 AI 编码助手的共处之道(ArkTS 视角)

谢道韫

关系型数据库有哪些?2025年主流选择与企业选型指南

镜舟科技

云原生 关系型数据库 数字化转型 大数据分析 StarRocks

Couchbase 可观测性最佳实践

观测云

couchbase

统一多模态 Transformer 架构在跨模态表示学习中的应用与优化

申公豹

人工智能

前维护与后维护LED屏的差异

Dylan

维护 LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

区块链预付卡App的技术方案

北京木奇移动技术有限公司

区块链开发 软件外包公司 区块链支付

中烟创新灯塔大模型应用开发平台入选工信部“政务大模型应用典型案例”

中烟创新

WebGL开发数字孪生框架

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

鸿蒙NEXT实战:构建社交应用新生态

最新动态

回顾Meltdown与Spectre漏洞披露事件:风险与启示

qife122

漏洞披露 侧信道攻击

性能提升 10 倍,零改造实现 DIFY 模式迁移至 Spring AI Alibaba 模式

阿里巴巴云原生

阿里云 云原生 Spring AI Alibaba

鸿蒙 开发黑科技:前端页面轻松调用 ArkTS 函数

最新动态

鸿蒙NEXT开发案例:世界时间表

最新动态

Playwright自动化测试系列课(3) | 第二阶段:核心技能与调试 ​​交互操作大全

测吧(北京)科技有限公司

javax.security.auth.login.LoginException: Message stream modified (41)

刘大猫

人工智能 数据挖掘 算法 数据分析 LoginException

踩过坑后,我发现了这几个运维神器

外滩运维专家

网站监控 免费SSL证书 监控电话 短信接口 免费监控

在AI时代,挖掘用户真实需求比技术实现更具挑战性

qife122

开源项目 需求分析

烟草行业监管新利器:中烟创新案卷评审评查系统提速监管效能

中烟创新

三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别

最新动态

黑龙江等保二级与三级的选择策略

等保测评

FindBugs 1.3.9发布了_Java_Charles Humble_InfoQ精选文章