如何在Visual Studio中仅查找指定方法调用链内的匹配项?
如何在Visual Studio中仅保留指定入口方法调用链内的搜索结果?
问题背景
我有如下代码结构:
class MyClass { SomeMethod() { print("hello") } MainMethod() { SomeMethod() } AnotherMethod() { print("hello") } }
我需要搜索print("hello"),但只保留从MainMethod出发的调用链中的匹配项(即MainMethod → SomeMethod → print("hello")这条路径的结果),忽略AnotherMethod里的直接调用结果。实际场景中搜索结果可能多达数十上百条,按指定初始方法过滤结果会大幅提升效率。请问Visual Studio是否有内置功能或扩展可实现此需求?
解决方案
内置功能实现
- 调用层次结构(Call Hierarchy)
- 右键点击
MainMethod,选择「查看调用层次结构」(快捷键:Ctrl+K, Ctrl+T)。 - 在调用层次结构窗口中,展开
MainMethod的「被调用的成员」节点,找到SomeMethod并继续展开。 - 最终定位到
print("hello")的调用,自动排除其他无关路径的结果。
- 右键点击
- 查找所有引用+精准筛选
先用Shift+F12触发「查找所有引用」得到所有print("hello")的结果,然后在结果窗口的筛选框中输入SomeMethod(或MyClass.SomeMethod),快速过滤出该方法内的调用。此方法适合调用链较简单的场景。
扩展工具实现
- Resharper
右键点击print("hello"),选择「查找调用路径」,在弹出的窗口中添加MainMethod作为起点,即可得到仅包含该入口的调用链结果,精准排除无关调用。 - Visual Studio Enterprise版代码地图(Code Map)
- 右键点击
MainMethod,选择「生成代码地图」。 - 在代码地图上右键点击
print("hello")节点,选择「查找所有引用到此节点的路径」,可直观查看并筛选出从MainMethod出发的调用路径,自动排除其他无关调用。
- 右键点击
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

