繁体   English   中英

我可以使用NDepend来计数演员吗?

[英]Can I use NDepend to count casts?

我有一些继承的代码,这些代码倾向于将对象作为接口传递(例如IFoo),然后在代码中的任意位置自发地将其转换为这些接口的具体实现(例如MyConcreteFoo)。

这是一个愚蠢的例子:

public bool IsThisFooScaredOfMonkeys(IFoo foo)
{
    if (foo is MyConcreteFoo)
    {
        return ((MyConcreteFoo)foo).BelievesMonkeysAreEvil;
    }
    return false;
}

我想做的是编写一个NDepend CQL查询来进行这些类型的转换,并为我提供每种方法,每种类型或真正的计数。 就是这样,我知道我可以在哪里开始集中精力摆脱这种特殊的愚蠢品牌,而不是让我的团队通过代码随意搜寻演员表...

有谁知道是否有办法做到这一点? 我猜不是(那里没有太多人需要特定功能),但我想我先在这里问... :-)

当然,关于使演员搜寻更快速的方法的任何其他想法也将同样受到赞赏。

这将非常好,但是NDepend限于一组实体,这些实体不覆盖单个语句。

NDepend实体

  1. 方法
  2. 领域
  3. 种类
  4. 命名空间
  5. 装配体

尽管有这个限制,NDepend仍然很棒! 也许这是版本的下一个功能。

现在,帕特里克·斯马基亚(Patrick Smacchia)也许可以告诉我不同​​的地方,所以我将与他联系以提出这个问题。 我希望他很快就能得到回应,因为他很精通。

附带说明:

如果您使用的是ReSharper 5.0,则它具有结构搜索功能 ,可让您查找这样的语句。 您必须自己构建搜索,但这是一个非常强大的工具。

此模式将捕获上面的示例:

if($fooObject$ is $concreteFoo$)
{
    return (($concreteFoo$)$fooObject$).$anyIdentifier$;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM