如果对不推荐使用的类型使用新调用,如何才能使NDepend失败?

时间:2016-06-16 13:10:23

标签: cql ndepend

我们有一个名为OldThing的类型,我们希望随着时间的推移弃用它。

我们需要一个说明from this point on, don't add any more calls to 'OldThing'的NDepend查询/规则。

我们目前使用NDepend并使用基线构建来检查don't make large methods even larger等内容。

因此,我们希望使用NDepend跟踪对OldThing所做的任何其他调用。我有以下CQL查询:

// <Name>Don't use OldThing going forwards</Name>

warnif count > 0 

let containsMethods = Methods.WithFullNameIn(
   "MyNamespace.OldType.get_Foo()",
   "MyNamespace.OldType.get_Bar()")

from m in Application.Methods.UsingAny(containsMethods) 
where m.IsUsedRecently()
select m

......麻烦的是,它似乎无法奏效;它没有找到任何电话。

在NDepend中有更好的方法吗(可能是利用trend metrics)?

1 个答案:

答案 0 :(得分:1)

您不需要where m.IsUsedRecently(),这仅适用于第三方方法调用。

然后你需要仔细检查let表达式是否与正确的弃用方法相匹配(你也可以使用ObsoleteAttribute一次匹配它们。)

最后你应该制定这个规则critical,它应该有效:)