第 3 章. 错误检测和代码审查
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
试想一下,公司向软件工程师支付了最高的薪水,让他们开发一款能为公司带来收入的产品,但却因为生产过程中代价高昂的错误而失去了收入。这是所有企业主最可怕的噩梦,但不幸的是,这种事情每天都在发生。软件使整个行业实现了自动化,取代了冗长的人工流程,并创造了新的方法来完成以前不可能完成的事情。然而,如果错误损害了底层产品的关键功能,自动化就无法有效实现。
为了减轻这一根本问题,多年来,人们创造了多种职称,以确保适当的质量保证(QA),如 QA 工程师、QA 分析师和测试工程师。此外,还开发了一些流程,以便在将部署到生产环境之前检测错误。这些流程可归结为两大类:
- 代码审查
-
这一过程是在开发过程中完成的,它包括团队成员在代码被认为可以上线之前互相审查代码。有些团队规定,在合并拉取请求(PR)之前,必须有最少数量的团队成员审查并批准该请求。
- 质量保证
-
该流程在开发完成后进行,是代码推送到生产前的最后一道 "关卡"。它包括在与生产密切相关的环境中进行的手动或自动测试。这些测试的目的是模仿用户的行为,以捕捉任何可能逃过代码审查的错误。
当任一流程发现任何错误、性能问题、安全漏洞或其他故障时,都可以对代码进行回退;也就是说,代码会回到开发它的软件工程师那里,并附上包含必须纠正的具体缺陷的注释。
这些流程对任何软件开发团队来说都至关重要,但它们往往非常冗长且不确定,在带来瓶颈的同时,也无法完全实现防止错误在生产中出现的愿景。因此,随着人工智能工具的出现,整个行业都开始关注代码审查的自动化,并使错误检测过程变得更快、更具有确定性。数以千计的软件工程团队已经在使用基于人工智能的自动化代码审查工具。
人工智能代码审查工具的类型
本章评测的人工智能工具主要分为三大类,在软件开发中的用途略有不同。其中一些工具提供了一种以上的功能。
- 基于集成开发环境的工具
-
基于集成开发环境的工具将直接集成到工程师用来编写代码的软件开发环境中,如 Visual Studio Code、IntelliJ IDEA 或 Eclipse。这些工具可在开发人员编写代码时提供实时反馈:高亮显示错误、提出改进建议,并直接在集成开发环境中提供文档链接。在本文介绍的三类工具中,这是唯一一类在代码保存到本地时提供反馈的工具。这种即时反馈环路可帮助开发人员当场发现并解决问题,从而提高代码质量,减少日后大量审查的需要。
- 基于 Git 的工具
-
基于 Git 的工具将与 GitHub、GitLab 或 Bitbucket 等版本控制系统集成,并在 Git 工作流中运行。与基于集成开发环境的工具不同,基于 Git 的工具不能由本地保存文件触发,只能由 Git 工作流中的操作触发。你可以对它们进行设置,以便在向版本库推送变更或创建或合并 PR 时自动审查代码。这些工具会根据预定义的规则和准则检查代码,并在代码库的所有分支中强制执行编码标准。它们通常以 PR 中的注释或持续集成管道中的报告的形式提供反馈,在将变更合并到主分支之前帮助确保代码质量。
- 基于浏览器的工具
-
这些工具可通过网络浏览器访问,通常与 GitHub、GitLab 和 Bitbucket 等在线版本控制平台集成。与基于 Git 的工具一样,它们只能由 Git 工作流中的变更触发,而不能由本地变更触发。你可以使用这些基于浏览器的工具,在线自动审查你的 PR 或代码合并。当你提交 PR 时,工具会审查代码中的错误、样式违规和安全漏洞,然后通过浏览器中的网页界面提供 ...