功能代码搜索

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:findThis Deprecated in July 2019
基类型 basetype:findThis
调用函数 caller:findThis Deprecated in July 2019
类定义或声明 class:findThis
类声明 classdecl:findThis Merged with class:
类定义 classdef:findThis Merged with class:
评论 comment:findThis
构造函数 ctor:findThis Merged with method:
声明 decl:findThis
定义 def:findThis
析构函数 dtor:findThis Merged with method:
枚举器 enum:findThis
Extern extern:findThis Deprecated in July 2019
字段 field:findThis
Friend 函数 friend:findThis Deprecated in July 2019
函数 func:findThis Merged with method:
函数声明 funcdecl:findThis Merged with method:
函数定义 funcdef:findThis Merged with method:
全局 global:findThis Deprecated in July 2019
头文件 header:findThis Deprecated in July 2019
Interface interface:findThis
巨集:findThis
宏定义 macrodef:findThis Merged with macro:
宏参考 macroref:findThis Merged with macro:
方法 method:findThis
方法声明 methoddecl:findThis Merged with method:
方法定义 methoddef:findThis Merged with method:
命名空间 namespace:findThis
properties prop:findThis
参考 ref:findThis
字符串文本 strlit:findThis
结构 struct:findThis Merged with type:
结构声明 structdecl:findThis Merged with type:
结构定义 structdef:findThis Merged with type:
模板参数 tmplarg:findThis Deprecated in July 2019
模板规范 tmplspec:findThis Deprecated in July 2019
类型 type:findThis
Typedef typedef:findThis Merged with type:
Union union:findThis Deprecated in July 2019

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

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

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

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

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

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

更多代码搜索操作

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

使用情况 示例
查找所有批注 History:Keyword
在代码中查找“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 进行代码搜索的信息,请参阅 “提取代码搜索结果”。

后续步骤