You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NDepend查询无法排除To开头方法问题求助

解决NDepend查询中无法排除以To开头方法的问题

我正在编写一个NDepend查询,用于找出所有未被其他方法调用的死代码方法,但需要排除ToString()、ToInt32()这类名称以To开头的方法。当前查询中使用了!m.SimpleName.StartsWith("To*")条件,却仍会返回ToString()、ToChar()、ToInt32()这类方法,请问我遗漏了什么?

当前查询代码:

// <Name>Methods that are not called</Name>
// <Description>Shows all Methods that could be removed</Description>
from m in JustMyCode.Methods
where m.NbMethodsCallingMe == 0
 && !m.IsConstructor
 && !m.IsAbstract
 && !m.SimpleName.StartsWith("get_")
 && !m.SimpleName.StartsWith("set_")
 && !m.SimpleName.StartsWith("<>f")
 && !m.SimpleName.Contains("callback")
 && !m.SimpleName.Contains("TClient")
 && !m.SimpleName.StartsWith("To*")
 && !m.SimpleName.StartsWith("From*")
 && !m.SimpleName.Contains("Click")
 && m.SimpleName != "BeginInvoke"
 && m.SimpleName != "EndInvoke"
 && m.SimpleName != ".cctor"
select new { m, MethodName = m.SimpleName, Count= m.NbMethodsCallingMe}

问题出在StartsWith的参数使用上:StartsWith方法是精确匹配前缀字符串,不需要额外添加通配符*。你写的"To*"会被当作完整的前缀字面量去匹配,只有方法名以"To*"(带星号)开头的才会被排除,这显然不是你想要的效果,所以ToString()这类方法自然不会被过滤掉。

只需要去掉通配符,直接使用"To"和"From"作为StartsWith的参数即可,修正后的查询代码如下:

// <Name>Methods that are not called</Name>
// <Description>Shows all Methods that could be removed</Description>
from m in JustMyCode.Methods
where m.NbMethodsCallingMe == 0
 && !m.IsConstructor
 && !m.IsAbstract
 && !m.SimpleName.StartsWith("get_")
 && !m.SimpleName.StartsWith("set_")
 && !m.SimpleName.StartsWith("<>f")
 && !m.SimpleName.Contains("callback")
 && !m.SimpleName.Contains("TClient")
 && !m.SimpleName.StartsWith("To")
 && !m.SimpleName.StartsWith("From")
 && !m.SimpleName.Contains("Click")
 && m.SimpleName != "BeginInvoke"
 && m.SimpleName != "EndInvoke"
 && m.SimpleName != ".cctor"
select new { m, MethodName = m.SimpleName, Count= m.NbMethodsCallingMe}

这样就能正确排除所有以To或From开头的方法了。

内容的提问来源于stack exchange,提问作者Peter M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:51:10