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

时间:2010-08-26 17:52:39

标签: c# ndepend

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

这是一个愚蠢的例子:

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

我想要做的是写一个NDepend CQL查询来获取这些类型的强制转换,并为每个方法或每种类型或其他任何东西提供计数。只是这样,所以我知道在哪里我可以开始集中力量摆脱这种特殊的愚蠢品牌,而不是让我的团队通过代码随意搜索演员阵容......

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

当然,任何其他关于如何使投射更快的想法同样值得赞赏。

1 个答案:

答案 0 :(得分:2)

这非常好,但NDepend仅限于一组不涵盖个别陈述的实体。

NDepend Entities

  1. 方法
  2. 字段
  3. 类型
  4. 命名空间
  5. 装配体
  6. 尽管存在这种限制,NDepend仍然非常棒!也许这是下一个版本的功能。

    现在Patrick Smacchia或许可以告诉我不同​​的内容,所以我会用这个问题与他联系。我希望很快得到回复,因为他处于最重要的状态。

    在旁边注意:

    如果您使用的是ReSharper 5.0,则会Structural Search允许您查找此类语句。您必须自己构建搜索,但它是一个非常强大的工具。

    这种模式会抓住上面的例子:

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