跳至主要内容

查找与 GitHub Copilot 建议匹配的公共代码

如果您允许 GitHub Copilot 提供与公开可用代码匹配的建议,Copilot 将显示找到的任何匹配代码的引用。

本文的此版本适用于 GitHub 网站上的 Copilot。有关本文的 Visual Studio Code 版本,请点击上面的选项卡。

本文的此版本适用于 Visual Studio Code 中的 Copilot。有关本文的 GitHub 网站版本,请点击上面的选项卡。

限制

目前,匹配代码的引用仅在 Visual Studio Code 和 GitHub 网站上可用。

先决条件

仅当 Copilot 配置为允许与公开可用代码匹配的建议时,才会生成匹配代码的引用。有关更多信息,请参阅“作为个人订阅者管理 Copilot 策略”。

关于 GitHub Copilot 中的代码引用

如果您已允许与公共代码匹配的建议,则 VS Code 中的 GitHub Copilot 可以为您提供建议匹配的代码的详细信息。这发生在

  • 您在编辑器中接受代码补全建议时。
  • Copilot Chat 中的回复包含匹配的代码时。

如果您已允许与公共代码匹配的建议,则只要 Copilot Chat 的回复包含匹配的代码,回复中就会包含匹配的详细信息。

此功能称为代码引用。

注意

通常,与公共代码的匹配很少发生,因此您不应期望在许多 Copilot Chat 回复中看到代码引用。

Copilot 代码补全的代码引用

当您接受与公共 GitHub 存储库中的代码匹配的代码补全建议时,会将一个条目添加到 GitHub Copilot 日志中。日志条目包含指向 GitHub.com 上页面的链接,您可以在其中查看公共 GitHub 存储库中类似代码的引用。

链接的网页包含在找到匹配代码的存储库中识别的任何许可证的详细信息。查看引用后,您可以决定如何继续。例如,您可以决定使用什么归属,或者是否要从您的项目中删除此代码。

注意

  • 代码补全的代码引用仅针对接受的 Copilot 建议的匹配发生。您编写的代码以及您修改的 Copilot 建议不会检查与公共代码的匹配。
  • 通常,与公共代码的匹配发生在不到 1% 的 Copilot 建议中,因此您不应期望看到许多建议的代码引用。

Copilot Chat 的代码引用

当 Copilot Chat 提供包含与公共 GitHub 存储库中的代码匹配的代码的回复时,将在回复末尾用链接指示这一点,以在 VS Code 编辑器中显示匹配代码的详细信息。

代码引用如何查找匹配的代码

Copilot 代码引用通过获取代码建议以及如果接受建议将围绕建议的一些代码,并将其与 GitHub.com 上所有公共存储库的索引进行比较来搜索匹配项。私有 GitHub 存储库中的代码或 GitHub 外部的代码不包含在搜索过程中。搜索索引每隔几个月刷新一次。因此,新提交的代码以及在创建索引之前删除的公共存储库中的代码可能不包含在搜索中。出于同样的原因,搜索可能会返回自创建索引以来已删除或移动的代码的匹配项。

查看代码补全的代码引用

您可以从 Visual Studio Code 中的一个 GitHub Copilot 日志访问代码引用。

  1. 在 Visual Studio Code 中,通过从菜单栏中选择“查看”>“输出”打开“输出”窗口。

  2. 在“输出”窗口右侧的下拉菜单中,选择“GitHub Copilot 日志”。

    Screenshot of the Output window with "GitHub Copilot Log" selected from the dropdown menu.

  3. 在 Visual Studio Code 中使用 GitHub Copilot 时,保持“GitHub Copilot 日志”视图显示。

    当您接受与公共 GitHub 存储库中的代码匹配的代码补全建议时,会将一个条目添加到日志中。

    日志条目包含以下详细信息

    • 您接受建议的日期和时间。
    • 添加建议的文件的名称。
    • 一条消息告诉您找到了类似的代码,以及许可证的数量和类型。
    • 指向 GitHub.com 上页面的链接。
    • 文件中添加建议的位置。
    • 建议并添加的部分代码的片段。

    Screenshot of the Output window showing a code referencing log entry.

    注意

    关闭编辑器时,GitHub Copilot 日志将被刷新。

  4. 在日志条目中,Ctrl+单击(Windows/Linux)或Command+单击(Mac)链接以在 GitHub.com 上查看代码引用。

    该页面列出了找到的匹配项,显示了相关文件的摘录。您可以单击文件名以查看整个文件。

    Screenshot of code references listed on GitHub.com.

    可以在多个存储库中找到匹配项,这些存储库具有不同的、有时是冲突的许可证。您可以使用页面左侧的复选框仅显示与特定许可证关联的匹配项。

    您应该查看存储库中的所有许可证信息,以验证它是否适用于匹配的代码,因为存储库可能包含多个许可证,并且这些许可证容易受到人为和非人为错误的影响。

    注意

    显示完整详细信息的网页将保留三个月。

验证代码引用功能

您可以通过提示 Copilot 添加一些常用的代码并在 Copilot 日志中检查输出,来验证代码引用是否正常工作。

  1. 在 Visual Studio Code 中,创建一个名为 fizz-buzz.js 的文件。

  2. 通过从菜单栏中选择“查看”>“输出”打开“输出”窗口。

  3. 在“输出”窗口右侧的下拉菜单中,选择“GitHub Copilot 日志”。

  4. 在编辑器中,键入

    function fizzBuzz()
    

    GitHub Copilot 应该建议代码来完成该函数。

  5. 通过按Tab接受建议。

    如果代码引用找到与公共代码的匹配项,则会将日志条目添加到“GitHub Copilot 日志”视图中。

查看 Copilot Chat 的代码引用

如果 Copilot Chat 中的回复包含匹配的代码,则将在回复末尾使用以下文本指示:

找到类似代码,具有 n 种许可证类型 - **查看匹配项**

  1. 单击“查看匹配项”以在新编辑器选项卡中显示匹配代码的详细信息。

    对于每个匹配代码的示例,编辑器都会显示

    • 匹配代码的许可证类型(如果已知)。
    • 找到匹配代码的 GitHub.com 上文件的 URL。
    • 显示匹配代码的代码片段。
  2. 在编辑器中,Ctrl+单击(Windows/Linux)或Command+单击(Mac)URL 以在 GitHub.com 上查看完整文件。

当 Copilot Chat 提供包含与公共 GitHub 存储库中的代码匹配的代码的回复时,将在代码建议下方指示

< > 来自 n 个存储库的公共代码引用

要查看匹配代码的详细信息

  1. 单击代码建议下方的“公共代码引用...”文本。

    包含匹配代码的 GitHub 存储库列表将显示在下拉菜单中,以及(如果找到)许可证信息。

    Screenshot of a code completion suggestion in Copilot Chat with a link to view code references.

  2. 单击存储库的名称以在 GitHub.com 上显示该存储库。