译者 | 李睿
审校 | 重楼
GitHub Copilot、CodeRabbit和Codium AI等人工智能代码审查工具正变得越来越流行,但它们并不是在各个方面都优于人工审查者。
人工智能(AI)正在进入各个行业,为软件编码和开发等领域提供了许多优势。如今,许多开发团队采用了人工智能代码审查工具,并发现它们能够更快地发现错误并提升代码质量。然而,正如任何新兴技术一样,人工智能也伴随着对其局限性的质疑,特别是在安全性和准确性方面。
理解人工智能代码审查工具
人工智能编码工具是利用人工智能来分析和改进代码的软件解决方案。传统上,代码审查需要同行或高级开发人员人工实施这一过程,但这可能很耗时,并且容易受到人类的监督。
人工智能代码审查工具通过使用机器学习和自然语言处理来检测代码中的异常、错误和安全漏洞,从而使代码审查流程实现了较高程度的自动化。这些工具通过快速扫描代码来查找常见错误、安全漏洞和低效逻辑。然后,它将提供改进建议。
像GitHub Copilot、CodeRabbit和Codium AI这样的工具可以分析代码行并标记问题区域,它们甚至在实时或审查过程中提供修复。这些工具背后的人工智能需要数据科学家对它们进行大量代码数据集的训练。这有助于它们从以前的评论中学习,并随着时间的推移不断改进建议。
2023年,人工智能代码审查工具的市场规模为48.6亿美元,研究人员预计,从2024年到2030年,其复合年增长率将达到27.1%。这种增长表明,更多的行业将使用人工智能来简化开发和工作流程,并提高代码质量。
使用人工智能代码审查工具的优点
当开发人员使用人工智能代码审查工具时,他们发现这些工具具有以下几个优点:
1.一致性
代码的审查人员对细节的关注和基于经验的方法各不相同。此外,这项任务本身需要大量时间,这可能会导致人员倦怠,从而使发现缺陷变得更加困难。然而,使用人工智能工具,开发人员可以简化审查流程过程,因为这类工具在所有审查环节中均能保持统一且严格的分析标准。
它对每段代码采用相同的标准,确保不存在漏洞或错误。因此,它们可以减少由于人为错误或疲劳而忽略的实例。这种一致性有助于开发团队保持更高的代码质量标准,特别是在需要多个团队成员完成的大型项目中。
2.速度
这些工具的运行速度是另一个主要的好处。由于人工代码审查非常耗时,人工智能解决方案可以在短时间内分析大量代码。
凭借其瞬时速度,它们可以在人类所需的一小部分时间内识别问题。这种快速分析允许开发人员接收实时反馈,使他们能够在编写代码时进行优化。
3.可用性
从处理不切实际的截止日期到修复错误和满足新要求,开发人员总是处于时间紧迫的状态。由于审查代码的可用性有限,开发人员可以在需要时转向人工智能工具。
由于具有全天候可用性,它们可以按时完成审查。这意味着专业人员可以保持项目进度,并在问题出现时立即解决。
使用人工智能代码审查工具的缺点
人工智能代码审查工具可能有很多优点,但是对于那些使用代码的人来说,考虑它们的缺点也是很重要的。
1.安全风险
人工智能代码审查人员面临的一个紧迫问题是,这些工具会带来安全风险。虽然它们可以识别漏洞并提高代码质量,但它们并不是万无一失的。事实上,安全软件开发商Snyk公司使用人工智能代码审查工具的经验表明,这些工具可能建议使用不安全的代码。然而,调查发现,75.8%的受访者认为人工智能生成的代码比人类编写的代码更安全。
许多开发人员对使用这些工具充满信心,这种信心可能源于对了解人工智能运作方面及其安全问题的迫切需求。虽然人工智能可以成为一项资产,但同一项调查还显示,56%的开发人员承认,这些软件解决方案有时或经常会引入安全漏洞等编码问题。
因此,让技术团队了解安全开发的局限性是非常重要的。与此同时,适当的监督是关键,因为它仍然需要人工审查来保证减少漏洞。
2.误报和漏报
人工智能工具尚未达到完美的程度,因为它们有时会将无关紧要的事项错误地标识为潜在问题。或者,它们可能无法识别真正的代码漏洞。误报可能会使开发人员感到沮丧,因为他们不得不花费大量的时间来处理不构成真正威胁的警告。随着时间的推移,这会导致“警报疲劳”,导致软件专业人员忽略有效的警告。
与其相反,漏报更令人担忧,因为它们允许实际的代码缺陷蒙混过关。这个问题可能会导致代码在运行时效率低下或不安全。
3.场景理解能力有限
人工智能通常缺乏理解代码背后更广泛场景或意图的能力。这可能会导致不恰当的建议或遗漏人工审查者可能会发现的问题。
例如,人工智能工具可能会将代码的某些部分标记为低效或冗余,而不理解开发人员做出这些选择来满足特定需求的原因。此外,在审查专门的代码时,该工具可能会忽略对应用程序的正常功能至关重要的依赖关系。当开发人员必须忽略无关的反馈时,缺乏场景意识可能会导致问题。
使用人工智能代码审查工具有益吗?
使用人工智能审查工具的好处是显而易见的:
- 在发现小问题方面效率高。
- 节省开发人员发现常见错误和提供实时反馈的时间。
- 允许更多地专注于复杂或创造性的工作。
然而,在使用它们时考虑到其局限性是至关重要的。考虑到它们的缺点,人工智能工具最适合于预先审查,而不是完整的代码审查。换句话说,它们在早期发现表面问题方面非常有效,但项目仍需要彻底的人工审查。
利用人工智能代码审查工具实现适当的平衡
当使用人工智能进行代码审查时,开发人员可以充分利用这些工具的各种优势。然而,它们也存在局限性。这就是开发人员应该明智地使用它们的原因。通过利用这些工具的优势,同时避免它们的缺点,将使其开发和部署过程更加高效和安全。
原文Should You Use AI Code Review Tools?,作者:Zac Amos