发现"死了"枚举值与NDepend

时间:2014-10-24 13:22:08

标签: c# .net ndepend

我有几个包含很多值的枚举,我知道大部分都没有使用。

我尝试编写NDepend CQLinq查询以返回我的代码库中使用的枚举值。在找到this SO问题后,我的查询基于one of the default queries provided by NDepend

// <Name>Used enum values</Name>
warnif count > 0
from f in JustMyCode.Fields where
    f.ParentNamespace.Name == "My.Namespace" &&
    f.NbMethodsUsingMe > 0 && 
    f.IsPublic &&     // Although not recommended, public fields might be used by client applications of your assemblies.
    f.IsEnumValue &&  // The IL code never explicitely uses enumeration value.
    f.Name !=  "value__"  && // Field named 'value__' are relative to enumerations and the IL code never explicitely uses them.
   !f.HasAttribute("NDepend.Attributes.IsNotDeadCodeAttribute".AllowNoMatch()) &&
   !f.IsGeneratedByCompiler // If you don't want to link NDepend.API.dll, you can use your own IsNotDeadCodeAttribute and adapt this rule.
select f

但是,NDepend认为没有使用任何枚举值。我一更换

f.NbMethodsUsingMe > 0 &&

f.NbMethodsUsingMe == 0 && 

列出了我的所有枚举值,这就是我知道查询的所有其他条款都没问题的方法。

我确实注意到原始查询的这两条评论:

    f.IsEnumValue &&  // The IL code never explicitely uses enumeration value.
    f.Name !=  "value__"  && // Field named 'value__' are relative to enumerations and the IL code never explicitely uses them.

这可能意味着NDepend无法检测到枚举值的用法。

有谁知道这是否是NDepend的限制?或者甚至更好,达到我想要的方式?

谢谢!

0 个答案:

没有答案