代码质量与安全 | 人工智能生成的代码对软件开发需求“信任但要验证”的方法

本文探讨了人工智能生成的代码在软件开发中的应用,强调了一种“信任但要验证”的方法来确保代码的质量和安全性。通过结合SonarQube等代码分析工具,开发人员可以对人工智能生成的代码进行验证和分析,在利用人工智能提高生产力的同时,避免潜在风险,提升对代码的信心。
创实信息作为SonarQube的中国官方授权合作伙伴,提供咨询、销售、实施、培训和技术支持服务,可以帮助开发人员更好地利用SonarQube工具,确保代码质量和安全性。欢迎咨询创实信息获取更多相关信息。
人工智能渗透到了当今商业的各个方面。事实上,IBM报告称,近一半的企业级公司已在其业务中积极部署人工智能。当今商业环境中使用的许多应用程序已经在幕后利用人工智能,这意味着许多终端用户很可能不知不觉中受益于人工智能。大多数领导者仍在尝试如何以安全的方式为组织开始使用人工智能。在有希望的地方,也有人对人工智能带来的新风险持怀疑态度,以及一定程度的担忧。但至关重要的是,恐惧和怀疑不能阻止前进的动力。相反,领导者必须专注于制定合适的计划,以避免落后的风险。
想象人工智能的能力在5到10年后,甚至一年后,会是什么样,这是令人兴奋的,但也无法预测。然而,无论发生什么,当我们学习实施和使用人工智能技术时,我们肯定会犯错误。为了最大限度地减少干扰和风险,同时最大限度地提高生产力和创新,公司必须以开放的态度对待人工智能的采用,并着眼于质量控制。
采用“信任但要验证”的方法,即利用人工智能并通过人工审查来验证其输出,是我们主张的一种利用技术的同时可以避免承担过多风险的方式。将该方法与 Sonar的清洁代码解决方案 SonarQube、SonarCloud和SonarLint的强大功能相结合,可以确信他们的 AI 生成的代码是高质量、可维护、可靠且安全的。

通过人工智能提高生产力

投资人工智能工具的公司正在积极投资于员工的成长、生产力和总体满意度。我认为这在任何行业都是如此——无论你喜欢与否,平凡的任务是必要的,但其本身没有什么价值,消耗大量宝贵的时间。即使人工智能不做其他事情,它也将能够减轻这些乏味重复的任务的负担。这将释放出时间来进行合作、创造和跳出常规的思考。
因此,工作性质的改变是不可避免的。人们将越来越多地成为质量控制、编辑和创意人员。例如,在软件开发中,人工智能(在正确的提示下)将越来越多地编写代码的主要元素。截至 2023年6月,GitHub发现其AI编码工具Copilot已生成超过30亿行可接受的代码。软件开发中,人类的角色将必须确保代码没有安全问题、可靠、可维护,并且消除可能还有问题的幻觉或任何其他类似的问题。我们将越来越多地看到可持续发展和清洁代码等优先事项成为重点关注的领域。 
人工智能提供了一种可以节省时间的解决方案,因此可以将重点放在架构、客户体验以及以前没人有时间解决的“新的、困难的、创新的问题”上。

了解并应对人工智能引发的风险

人工智能还会带来一种风险,即会在那些利用这种技术提高生产力的人和那些仅仅因为它是环境的一部分而使用它的人之间造成差距。我可以看到一种可能性,即它会将团队分裂成两个部分。如果一个团队在技术的使用方式上存在分歧,因此产生的产品也存在差异,那么就会出现很多不一致的情况。
风险不仅限于个人,还将延伸到整个团队和组织。在软件开发领域,当今的公司已经在使用人工智能来编写代码。但问题是:企业在软件的基础上进行创新,在市场上竞争,而软件已经充斥着一些不良代码,会导致技术债务增加。糟糕的代码是一个价值数万亿美元的问题,而人工智能有可能在不考虑质量的情况下提高软件开发速度,从而大大加剧这个问题。

开发者必须优先考虑质量

毫不夸张地说,在构建软件时,公司需要在采用人工智能编码助手和工具时着眼于质量控制。就像人类的输出一样,人工智能生成的代码也存在安全性、可靠性和可维护性的问题。事实上,微软研究院最近的一项研究分析了 22 个编码助手在功能正确性之外的表现。研究发现,“在我们的基准测试中,他们通常会表现不佳,这暗示了他们的训练设置中存在基础盲点。”
在可预见的未来,一个事实仍然成立:所有代码(人类或人工智能生成的代码)在投入生产之前都必须经过适当的分析和测试。开发人员应该求助于人工智能来处理繁琐、日常的大量工作和自动化,但必须进行正确的检查以确保他们的代码仍然是公司的基础资产。
AI编码工具预计将节省开发人员20-30%的时间,使他们能够卸下一些工作,专注于更有趣和更具挑战性的项目。由于工作负荷增加,83%的开发人员都会出现精疲力尽的情况,而这项技术可以提供急需的缓解,提高生产力并提升工作满意度。它还可以帮助技术和业务领导者在速度和质量之间的困境中寻求平衡。

建立保障措施以善用人工智能

无论组织是否知晓,他们的员工都在使用人工智能,因此最好了解人工智能的使用场景和方式。公司必须深思熟虑他们的投资以及需要建立的治理措施。组织应该建立易于适应和修改的治理框架,因为情况一直在迅速变化。
这里有一些需要记住的事情:首先,可信赖的框架是一个很好的起点和参考对象,例如NIST的安全软件开发框架。组织还应列出一份已批准的人工智能工具清单,特别是在软件开发人员中已经广泛使用AI代码生成器的情况下,是否允许使用这些工具需要做出决策。还应明确不同AI用例应该如何进行审查,以确保任何发布或投入生产的内容都是正确和负责任的。
GitHub甚至在其Copilot文档中也提到了这一点,他们表示“您有责任确保代码的安全性和质量。我们建议您在使用 GitHub Copilot生成的代码时采取与使用非您自己编写的任何代码时相同的预防措施。这些预防措施包括严格的测试、IP 扫描和安全漏洞跟踪。”
AI的使用也需要从整体的角度来考虑;将人工智能分离到特定部门的想法是错误的。首席技术官和首席信息安全官不应该是唯一参与讨论的人。建立明确的原则非常关键,以树立起组织的基调。与其过度反应或冲动行事,拥有适当的保护措施将成为指引的明灯。

借助Sonar,无论是由人工智能生成还是

由人类生成,对您的代码要充满信心

当考虑到修复由人工智能生成的任何产出的成本时,流行的技术思维方式“快速行动,打破常规”根本行不通。然而,您也不能放慢创新的步伐,人工智能可以帮助企业获得竞争优势。
因此,组织必须积极主动地评估整体风险、人工智能如何提高效率、它的有效性,并形成适当的治理政策。他们还必须投资正确的工具来支持他们的开发团队以不增加风险和技术债务的方式利用genAI。
借助 Sonar 强大的代码分析工具(SonarQube、SonarCloud、SonarLint),开发人员可以轻松地与流行的编码环境和持续集成/持续交付(CI/CD)流水线进行集成,以深入了解其代码的质量、可维护性、可靠性和安全性,无论这些代码是由人类还是人工智能生成的。拥有了对代码的这种可见性,组织可以确信他们的代码是干净的,从而增加信心。   
在使用人工智能的各个领域中,采取“信任但要验证”的方法非常重要。在代码中,甚至在营销中,团队需要确保他们不会盲目接受人工智能生成的内容。一切都需要在企业和社会背景下考虑,这一点不应该在人工智能技术的炒作中被遗忘。
作者:Tariq Shaukat,CO-CEO

即试用SonarQube,请联系SonarQube中国官方授权合作伙伴——创实 ,我们提供SonarQube产品的咨询、销售、实施、培训及技术支持服务。