随着ChatGPT、GitHub Copilot和Tabnine等生成式AI工具席卷软件开发领域,软件开发者都在争相借助这些技术以实现日常开发任务的自动化。Stack Overflow最近的一项调查显示,在89,000名受访者中,有70%的受访者表示目前已经或计划在2023年利用AI工具实施软件开发。
为了顺应日益扩大的AI领域,新思科技推出新的AI代码分析API预览版,使开发者能够分析AI工具生成的代码,识别其中包含的开源代码片段及相关的许可和版权条款。借助新思科技Polaris SaaS平台和Black Duck®代码片段分析功能,开发者只需提供AI工具生成的代码块,即可了解是否有与之匹配的开源项目,如果有,还可了解与该开源项目相关的许可协议。有了这些信息,开发者便可确保自己构建和发布的应用程序中没有包含他人受保护的知识产权。
新思科技最近主持了一场题为“Black Duck代码片段匹配和生成式人工智能模型”的网络研讨会,讨论了AI的兴起,以及在这个具有不确定性的前沿领域中,我们的代码片段分析技术如何帮助保护团队和IP。下面是这场研讨会的要点介绍。
AI辅助编程的风险
优点:资源限制较少。
缺点:未知限制的继承代码。
痛点:许可协议冲突,存在潜在的法律问题。
在网络研讨会上,新思科技强调我们正朝着全行业向AI辅助编程的方向迈进。虽然从资源和时限角度来看这是有益的,但偷懒或不安全地使用AI可能会引发大麻烦。
Copilot和ChatGPT等AI工具基于学习算法,利用大量公共和开放源代码库进行训练。这些模型可以根据用户提供的上下文,推荐适合加入项目的代码行。从表面上看,这对加快开发速度和减少资源限制大有帮助。然而,鉴于这些工具是用开放源代码训练的,我们必须意识到,这些公共代码中很大一部分可能受版权保护,或者受更严格的许可条件约束。
最坏的情况已经出现:今年早些时候,GitHub和OpenAI就遭遇了前所未有的集体诉讼,原告声称Copilot和ChatGPT违反了版权法,因为这些模型在生成代码的时候,并没有提供必要的原作者和归属说明。这些诉讼以及未来不可避免的其他诉讼会带来哪些后果尚不明朗,但没有哪家组织愿意对簿公堂。
因此,问题不在于使用生成式人工智能工具,而在于没有使用可识别许可冲突及其潜在风险的工具以免除后顾之忧。
AI生成代码的版权侵犯风险
早在AI出现之前,就经常看到因违反许可要求而产生的纠纷,比如2008年的自由软件基金会诉思科系统公司案,以及2017年的Artifex Software诉Hancom案。如今,这类风险依然存在。随着AI辅助软件开发的发展,企业更加需要对潜在的版权侵犯保持警惕,并严格遵守开源许可条款。
企业领导者很关心AI防护和保护措施的实施,但往往缺乏战术或可持续的方法。如今,有些组织完全忽视安全需求,有些则采取不可持续的人工审核方式。人工审核方式需要占用大量的资源,人力、财力和时间要求都很高。在经济形势不明朗且能力有限的情况下,企业很难投入必要资源来完成这项工作。此外,许可法规非常复杂,需要具备一定的专业知识和培训才能熟练掌握,而这也是很多企业缺乏的。
除人手有限之外,人工审核难免会有失误或遗漏。我们不能寄希望于让开发者挖空心思调查每个开源组件所对应的各项许可并顺利识别所有相关许可,这是不现实的,尤其是现代应用对开源的使用非常普遍。
因此,我们需要一种超越常见开源代码检查方法的自动化代解决方案,以帮助团队简化并加速处理开源代码使用中的合规事宜。
Black Duck代码片段分析
虽然大部分SCA工具都会解析软件包管理器生成的文件,以解决开源代码的依赖关系问题,但这并不能覆盖与AI生成代码相关的所有IP。AI生成代码通常以软件包管理器无法识别的代码块或代码片段形式提供,或包含在package.json或pom.xml等文件中。为此,Black Duck在识别开源依赖关系方面更进一步,增加了代码片段分析功能。
Black Duck的代码片段分析功能名副其实:可以分析源代码,并且可以将只有几行的代码片段与所属的开源项目进行匹配。然后,Black Duck便可向开发者披露该开源项目所涉及的许可,并就相关风险和义务提出建议。Black Duck代码片段分析功能由KnowledgeBase™资源库提供支持,其中包含600多万个开源项目和2,750多个开源许可。
开发者向Black Duck API发送POST请求,并在POST请求的正文中包含AI生成的代码片段。
随后,开发者会收到一条响应消息,其中包含所有的开源代码匹配详情以及相关的许可信息。
本例中,代码片段与ACADO工具包相匹配。API响应消息中的链接指向了ACADO项目的GitHub页面。
在本例中,GitHub Copilot提供的代码片段与ACADO项目中cs_util.c文件的cs_spalloc函数直接匹配。
现在,新思科技免费公开提供上述AI代码分析工具的预览版。有了该工具,开发者可以放心使用AI工具来提高生产力,而不用再担心违反可能被其他SCA工具忽视的许可条款。