功能代码搜索

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019

使用功能代码搜索更快地查找所需的代码。 本文介绍如何通过 Azure DevOps 代码搜索 市场扩展,使用代码类型和其他函数优化存储库中的搜索。

先决条件

  • 访问级别:
    • 基本访问权限:
      • 若要使用代码搜索,至少具有基本访问权限。
      • 若要访问专用项目中的代码,至少具有基本访问权限。
    • 利益干系人访问:
      • 具有利益干系人访问权限的用户无权访问代码,因此他们无法搜索代码。
      • 具有公共项目利益干系人访问权限的用户具有对代码的完全访问权限,因此他们可以搜索代码。
  • 搜索结果:
    • 基于访问的结果: 在组织或集合中进行搜索时,仅列出项目成员有权访问的结果。
  • 访问级别:
    • 基本访问权限:
      • 若要使用代码搜索,至少具有基本访问权限。
      • 若要访问专用项目中的代码,至少具有基本访问权限。
    • 利益相关者访问权限:
      • 具有利益干系人访问权限的用户无权访问代码,因此他们无法搜索代码。
  • 搜索结果:
    • 基于访问的结果: 在组织或集合中进行搜索时,仅列出项目成员有权访问的结果。
  • 工具:

代码搜索最佳做法

  • 开始广泛: 从广泛搜索开始,然后使用筛选器运算符按项目、存储库、路径、文件名等缩小范围。
  • 使用 通配符布尔运算符 如果你不知道确切的术语,请使用通配符来扩展搜索和布尔运算符来优化它。
  • 悬停以获取详细信息: 若要获取有关代码项的详细信息,请将鼠标悬停在它上方并使用快捷菜单在所有项目和文件中搜索该文本。
  • 跟踪代码功能: 使用快捷菜单搜索相关项,例如文件中的定义和引用,或在搜索结果中跟踪代码的工作原理。
  • 使用代码类型筛选器: 若要查找 API 或其他代码元素的实现,请使用代码类型筛选器搜索特定类型的代码,例如:
    • 定义
    • 引用
    • 功能
    • 评论
    • 字符串
    • 命名空间等

注意

代码搜索不适用于分叉存储库。

用于查找特定类型的代码的函数

若要更快地创建查询,请在输入文本时从下拉列表中选择函数和关键字。 选择显示更多查看所有选项。 可以根据需要组合不同的函数。

还可以使用左侧列中的筛选器缩小搜索范围。 显示更多 显示所有函数和关键字。

或者,可以在搜索框中键入函数和参数。 下表列出了用于在 C#、C、C++、Java 和 Visual Basic.NET 代码中查找特定类型或成员的函数。

若要查找代码,其中 findThis 显示为... ... 搜索参数 arg:findThis
论点 arg:findThisDeprecated in July 2019
基类型 basetype:findThis
调用函数 调用方:findThisDeprecated in July 2019
类定义或声明 类:findThis
类声明 classdecl:findThisMerged with class:
类定义 classdef:findThisMerged with class:
评论 注释:findThis
构造函数 ctor:findThisMerged with method:
声明 decl:findThis
定义 def:findThis
析构函数 dtor:findThisMerged with method:
枚举器 枚举:findThis
Extern extern:findThisDeprecated in July 2019
字段 字段:findThis
友元函数 好友:findThisDeprecated in July 2019
功能 func:findThisMerged with method:
函数声明 funcdecl:findThisMerged with method:
函数定义 funcdef:findThisMerged with method:
全局 全局:findThisDeprecated in July 2019
标头 标头:findThisDeprecated in July 2019
接口 接口:findThis
Macro 宏:findThis
宏定义 macrodef:findThisMerged with macro:
宏参考 macroref:findThisMerged with macro:
方法 方法:findThis
方法声明 methoddecl:findThisMerged with method:
方法定义 methoddef:findThisMerged with method:
Namespace 命名空间:findThis
财产 prop:findThis
参考 ref:findThis
字符串文本 strlit:findThis
结构 结构:findThisMerged with type:
结构声明 structdecl:findThisMerged with type:
结构定义 structdef:findThisMerged with type:
模板参数 tmplarg:findThisDeprecated in July 2019
模板规范 tmplspec:findThisDeprecated in July 2019
类型 类型:findThis
Typedef typedef:findThisMerged with type:
联盟 并集:findThisDeprecated in July 2019

用于选择项目、存储库、路径和文件的函数

借助函数,可以轻松地将搜索范围缩小到指定位置、这些位置中的特定类型的文件或指定的文件名。 使用 projrepopath 筛选器将搜索范围缩小到特定位置。 根据需要混合和匹配以下函数。

使用情况 示例
在 Fabrikam 项目中查找单词 QueueJobsNow 的所有出现次数。 QueueJobsNow proj:Fabrikam
在 Contoso 存储库中查找单词 QueueJobsNow 的所有匹配项。 QueueJobsNow repo:Contoso
在路径 VisualStudio/Services/Framework 及其子路径中查找单词 QueueJobsNow 的所有出现。 QueueJobsNow path:VisualStudio/Services/Framework
查找路径 */Doc*/Framework/**/Doc*/*/*/Framework/* 及其子路径中 QueueJobsNow 一词的所有匹配项。 通配模式 (**) 可匹配多个段落中的零个或多个字符。 例如,path:**/Doc**/Framework 也匹配 abc/DocTest/gh/ijk/mnop/Framework/ QueueJobsNow path:**/Doc**/Framework
查找路径 */Doc*/Framework/* 及其子路径和文件名 Test*.txt(使用全局模式**)中 QueueJobsNow 一词的所有匹配项。 例如,path:**/Doc**/Framework/**/Test*.txt 也匹配 abc/def/DocA/gh/Framework/TestMisc.txt QueueJobsNow path:**/Doc**/Framework/**/Test*.txt
如果筛选器的参数包含空格,请将其括在双引号中。 QueueJobsNow path:"VisualStudio/Windows Phones and Devices/Services"
查找文件名以 queueRegister 开头的所有文件中包含 QueueJobsNow 一词的所有匹配项。 QueueJobsNow file:queueRegister*
查找名称为 QueueRegister 且没有扩展名的所有文件。 使用引号查找没有扩展名的文件。 file:"queueRegister"
仅在 C# 源文件中查找 QueueJobsNow 一词的所有匹配项。 不包含文件类型函数的纯文本搜索字符串还会查找字符串与文件名部分匹配的文件。 QueueJobsNow ext:cs

通过代码搜索,可以基于以前的结果以交互方式扩展搜索。 例如,跟踪或调试代码时,可以将搜索范围扩大到相关文件。

右键单击文件中的某个术语,然后开始对具有相同术语的其他文件进行新的搜索。 可以将其搜索为文本,也可以将其搜索为定义或引用(如果它是对象名称)。

有关详细信息,请参阅搜索入门

更多代码搜索操作

下面是一些更多代码搜索函数。 可以在 C#、C、C++、Java 和 Visual Basic.NET 文件中搜索代码类型。 若要在新选项卡中打开搜索结果,请从主搜索框中选择 Ctrl + Enter。 若要切换到 Google Chrome 中的新选项卡,请选择 Ctrl + Shift + Enter

使用情况 示例
查找所有批注 历史记录:关键字
在代码中查找“ToDo”注释的所有实例 选择 comment: 并输入 todo
在特定位置(例如在特定路径中)搜索 使用搜索字符串,例如 Driver path:MyShuttle/Server
按名称或仅按文件扩展名搜索文件 Driver file:GreenCabs.cs。 如果要查看代码中的所有错误字符串,搜索字符串 error ext:resx 可能很有用。 即使纯文本搜索字符串与文件名的一部分匹配,该文件也会显示在找到的文件列表中。 此搜索无需匹配特定的文件类型函数即可运行。

搜索 Git 项目和存储库

Git 项目包含存储库列表。 若要展开搜索,请检查项目和存储库框。 可以搜索所有或更多项目,或者减少项目和存储库。 如果有多个项目或存储库,请选择显示更多以查看全部。

代码搜索可以为 Git 存储库中的不同分支编制索引。 默认情况下,它仅为 Git 存储库的默认分支中的文件编制索引。 默认分支是主分支。 若要为其他分支编制索引,请转到 项目设置页存储库 部分中的“选项”选项卡。

注意

默认情况下,代码搜索在存储库的主分支或默认分支中查找指定的字符串。 但是,可以通过指定特定分支的筛选器来缩小搜索范围。

显示用于配置的 Git 分支的屏幕截图。

搜索 TFVC 项目

TFVC 项目仅显示可以读取的文件夹。 看不到任何其他项目或文件夹。 若要筛选搜索,请从树中选择文件夹。

提示

代码搜索会保存用户的最后设置,例如您搜索的项目、存储库或路径。 如果要在不同的范围内搜索,请选择“清除所有链接 清除复选框并搜索所有项目。 目标文件中的前 100 个匹配项在结果窗格中由代码搜索突出显示。

使用 REST API 搜索代码

可以使用 API 来扩展或补充本文中列出的功能。 有关使用 REST API 进行代码搜索的信息,请参阅 提取代码搜索结果

后续步骤