Github Copilot - 伦理考量



GitHub Copilot 接受了公共存储库(包括开源项目)的训练,这些存储库可能受各种许可证(如 MIT、GPL、Apache 等)的约束。如果 Copilot 生成的代码与具有特定许可条款的开源代码相似或源自开源代码,您可能需要同意这些条款。例如,某些许可证要求署名,这意味着您需要在项目中注明原始作者。

如果您在商业项目中使用 Copilot 生成的代码而未验证其来源,如果原始作者声称拥有所有权,您可能会面临法律问题。

GitHub Copilot 法律问题

  • 所有权:由于 Copilot 接受了公开可用代码的训练,因此生成的代码可能类似于现有作品。这引发了关于谁拥有生成代码的问题,尤其是在生成的代码与受版权保护的材料相似的情况下。
  • 版权:Copilot 可能会建议已经在现有项目中使用的代码,如果未正确署名或授权原始作者的作品,则可能导致侵犯版权。开发人员在使用 Copilot 时应谨慎,以避免与知识产权相关的法律问题。
  • 安全性:Copilot 可能会建议看起来功能正常的代码,但其中包含隐藏的安全漏洞。由于 AI 并不完全理解上下文,因此开发人员必须审查代码以查找潜在的缺陷,例如 SQL 注入风险、未加密的数据处理或使用过时的库。

一些开发人员报告称,Copilot 生成的代码与他们过去编写的代码相似。这引发了对 Copilot 生成的代码原创性的担忧。目前还没有任何工具可以验证 Copilot 生成的代码的真实性。

GitHub 的立场是什么?

GitHub 声明 Copilot 基于它使用文本生成转换器学习的模式生成新的代码,这意味着它不会直接从任何来源复制代码。但是,在某些情况下,生成的代码可能看起来与现有代码相似。

GitHub 建议开发人员审查和修改 Copilot 生成的代码,以确保它满足其项目的要求并遵循最佳实践。他们还建议开发人员尊重知识产权、遵守许可条款并进行彻底的代码审查以避免法律问题。

如何从 Copilot 生成安全的代码?

以下是一些从 Copilot 生成安全代码的技巧

  • 审查代码建议:始终审查 Copilot 建议的代码。在集成代码之前,确保它遵循最佳实践并符合项目的需要。
  • 修改代码:对生成的代码进行必要的修改,以确保其安全、高效并符合项目的编码标准。
  • 使用可信赖的库:在可能的情况下,优先使用完善的库,而不是仅仅依赖 AI 生成的代码。这可以最大程度地降低安全漏洞或错误的风险。
  • 检查安全漏洞:始终审查 Copilot 的代码是否存在潜在的安全风险,例如 SQL 注入、XSS 漏洞或弱加密模式。进行彻底的测试和代码审查。
  • 审核与现有代码的相似性:如果生成的代码看起来与现有项目或专有解决方案过于相似,请验证其来源以避免侵犯版权。
  • 启用私有模式:在处理敏感项目时,您可以禁用 Copilot 或在私有模式下使用它,以避免泄露机密代码。
广告