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 或在私人模式下使用它以避免暴露机密代码。