跳至主要内容

查找与 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 聊天的回复包含匹配的代码时。

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

此功能称为代码引用。

注意

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

Copilot 代码补全的代码引用

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

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

注意

  • 代码补全的代码引用仅针对接受的 Copilot 建议的匹配才会发生。你编写的代码以及你修改过的 Copilot 建议不会检查与公共代码的匹配。
  • 通常,与公共代码的匹配少于百分之一的 Copilot 建议,因此你不应期望对许多建议看到代码引用。

Copilot 聊天的代码引用

当 Copilot 聊天提供包含与公共 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 聊天的代码引用

如果 Copilot 聊天的回复包含匹配的代码,则回复末尾会显示以下文本:

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

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

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

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

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

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

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

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

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

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

  2. 单击代码库名称以在 GitHub.com 上显示该代码库。