NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Google 发布针对构建错误的研究洞见

  • 2014-07-10
  • 本文字数:1838 字

    阅读完需:约 6 分钟

Google 的工程师们最近发布了一份研究论文,针对过去九个月中,Google 内部数以千计的开发者所生成的两千六百万份构建进行了实证研究,并给出了一些洞见。这份论文介绍了构建工作流,并分析了失败频率和编译器错误类型,以及开发者们解决这些错误所做的努力。论文作者们表示,研究结果所引申出的洞见,能帮助我们理解构建过程在大型组织机构中如何发挥作用,以及如何更有效地为开发者们提供支持。

论文作者们认为,研究过程中采用了描绘业界程序员与其编译器和构建工具如何交互的方法,使得该研究“非常新奇”。此外,他们强调了构建过程的重要性,认为它是“编辑 - 编译 - 调试”循环中的核心步骤:

缓慢的编译可能会让程序员被其他任务分心或是丢失当前工作的上下文 […] 任何延误都会放大程序员决定下一步要执行的变更,与查看该变更效果之间的间隔。确保构建过程快速,并了解何时以及为何失败,是提高程序员生产力的关键部分。

研究者们对以下四方面指标的分析,并试着回答一些问题:

  • 每个开发者执行的构建数量。
  • 构建失败率。
  • 每个错误类型实际发生的错误数量。
  • 开发者解决错误所花费的时间。

构建失败的情况有多频繁?

构建失败率的分析结果显示,“失败情况接近正态分布。其中,C++ 构建失败的中位百分比(38.4%)高于 Java(28.5%)。”研究者们将不同语言之间的差异,归结于(至少部分程度上):大部分 JAVA 开发者能够从他们使用的 IDE 所提供的内建的检查中获益。

“失败率极低或极高的开发者都很少见,”而且这两种类型的开发者似乎都不是某一特定语言或项目的常规参与者(临时使用该语言或参与该项目)。

对于构建数量与构建失败率之间,这次的研究并没有发现强相关现象。因此,或许能够排除这样的假设:构建更频繁的开发者可能会拥有更高的失败率。

而对于开发者经验和构建失败率之间,研究甚至没有发现相关性,或许某种程度上“这也许是因为很难精确地描绘经验或专业度。”

构建为何会失败?

论文中列出了许多构建错误,并对其发生频率进行了测量,如图 1 所示(点击查看大图)。

对于列出的这些错误,该论文将其进一步划分为五大类:依赖性、类型不匹配、语法、语义和其他。错误的数量在这五大类型中的分布如图 2 所示。

对 C++(52.68%)和 Java(64.71%)来说,依赖相关的错误都是最常见错误。而语法方面的错误,C++ 多于 Java。对此,论文作者同样认为,这是由于 Java 开发者能够“享受到”更强大的 IDE 所致。

解决构建失败的问题需要多久?

总的来说,这次的研究发现,解决构建错误的中位时间分别是 5 分钟(C++)和 12 分钟(Java)。

对于不同错误类型来说,这两个数字可能会有数量级的差异,但平均来说,C++ 解决时间要少于 Java——不过,部分 C++ 构建错误的解决时间的中位数要高于 Java,因为它们更难以解决。

在修订错误之前的构建尝试方面,无论 Java 还是 C++,面对 25 个最常见的错误时,75% 的构建错误在最多两次构建中就得以解决了。

调查结果与启发

这项研究最主要的启示,作者认为包括以下方面:

  • 编程语言无关,90% 的构建失败分布在大约 10% 的错误类型中。
  • 依赖性错误最常出现。
  • 平均来说,修复一个构建错误需要一次构建迭代,而大部分错误可以在两次构建迭代中得以解决。

作者们认为研究结果对 IT 从业者和工具开发者来说都很有价值。

< 引文 > 对于 IT 从业者来说,该研究提供了一套手段,用来识别在哪些领域中,额外的专业知识、工具使用或开发行为(例如减少依赖)能够带来最大的好处。

另一方面,“更好的能够解决依赖性错误的工具,将带来最大的潜在回报”。类似地,对错误信息和类型所做的定量分析,能够帮助编译器团队识别出,需要重新审视哪些错误信息,以便使其对开发者而言更有意义。

最后,希望大家能够意识到,与任何其他研究报告一样,这份研究也有其局限性。论文的作者们给出了以下可能影响其有效性的因素:

  • 该研究仅在一家公司内部展开,因此受限于特定的流程、制约因素、资源和工具。不过,该研究覆盖的构建、开发者和涉及系统的数量量级,为社区提供了宝贵的基线。
  • 该研究专注于 C++ 和 Java 两门编程语言。
  • 最后,与以下因素有关的抉择,都可能会影响研究结果的适用性。这些因素包括数据采集、错误分级、将错误映射到分类方法(归类),以及为了消除干扰而对数据做的裁剪。

这项研究由 Google 工程师 Caitlin Sadowski、Edward Aftandilian 和 Robert Bowdidge,与香港大学研究员 Hyunmin Seo、Nebraska 大学研究员 Sebastian Elbaum 共同完成。

查看英文原文: Google’s Study Provides Insights into Programmers’ Build Errors

2014-07-10 12:051067
用户头像

发布了 256 篇内容, 共 68.5 次阅读, 收获喜欢 10 次。

关注

评论

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

DAPP开发:区块链平台、设计智能合约、创建用户界面等

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

被 Next.js 的环境变量给坑了一把...

这我可不懂

next.js

Chronicle for Mac(mac优秀的财务管理软件)v14.4.0直装版

影影绰绰一往直前

Termius for Mac(多协议远程管理软件) 8.4.0完美激活版

mac

苹果mac Windows软件 Termius 远程访问和管理工具

最常见的 SEO 错误,以及如何避免它们

九凌网络

转变关键财务流程,实现企业数字化升级

智达方通

数字化升级 预算管理 财务流程

Luminar Neo for mac(创意图片编辑器)激活版

影影绰绰一往直前

TinkerTool System for Mac(系统维护工具)v8.88免激活版

iMac小白

OmniGraffle Pro for mac(最好用的思维导图工具)v7.22.3中文正式版

iMac小白

Aiseesoft Mac Video Converter Ultimate for Mac(好用的视频转换工具)免激活版

iMac小白

Parallels Desktop 19 for Mac虚拟机 19.1.0一键激活版 支持M1

彩云

Parallels Desktop 虚拟机 Parallels Desktop

和鲸科技创始人范向伟受邀出席“凌云出海,来中东吧”2023华为云上海路演活动

ModelWhale

人工智能 华为云 数据科学 出海 中东

Steinberg Cubase Pro 13 for Mac(全面的音频处理创作工具)激活版下载

影影绰绰一往直前

软件测试/人工智能|教你如何用ChatGPT写一份漂亮的测试计划

霍格沃兹测试开发学社

软件测试/人工智能|如何使用ChatGPT写出满意的测试方案

霍格沃兹测试开发学社

BatchPhoto pro for Mac(mac图片编辑工具)v5.0.1激活版

iMac小白

Magic Disk Cleaner for mac(磁盘垃圾清理工具)v2.5.2激活版

影影绰绰一往直前

Steinberg Nuendo for mac(音频后期制作软件)v13.0.10激活版

影影绰绰一往直前

The Foundry Nuke 15 for Mac(电影特效合成软件)15.0v2激活版

iMac小白

如何寻找最好的谷歌seo公司来提升你的外贸网站排名

九凌网络

AnyGo for Mac(在iPhone / iPad上轻松模拟GPS位置)v6.8.1激活版

iMac小白

Farrago for Mac(最佳的音频编辑软件)v2.0.7注册版

iMac小白

HarmonyOS 实战项目

快乐非自愿限量之名

鸿蒙 HarmonyOS 鸿蒙开发

ZBrush 2024 for Mac(3D数字雕刻和绘画软件)v2024中文激活版

iMac小白

融云五大场景化能力,全面赋能金融行业数智化转型

融云 RongCloud

金融 IM RTC 数智化 通讯

大模型驱动DataWorks数据开发治理平台智能化升级

阿里云大数据AI技术

大数据

软件测试/人工智能|测试报告很难写,ChatGPT来帮你

霍格沃兹测试开发学社

什么是谷歌SEO推广,谷歌SEO推广的6大优势!

九凌网络

Dynamic Wallpaper for Mac(精美的动态壁纸)v16.7免激活版

影影绰绰一往直前

DaVinci Resolve Studio 18 for Mac(达芬奇影视后期处理软件)v18.6.3中文激活版

iMac小白

Acon Digital Acoustica Premium Edition for mac(mac数字音频编辑器)v7.5.5激活版

iMac小白

Google发布针对构建错误的研究洞见_Java_Sergio De Simone_InfoQ精选文章