标签: ndepend

CppDepend vs NDepend

无论CppDependNDepend的是由同一家公司开发,似乎是基于相同的代码库和共享一些功能.我还没有找到并排的比较网站.

我在几个没有任何c ++代码的普通c#解决方案上工作,但也有c#旁边的解决方案也包含c ++托管代码和c ++本机代码.

如果我想要所有项目类型的完整功能集,我真的需要购买这两种工具吗?是否需要使用CppDepend和带有NDepend的c#-only解决方案打开我的混合解决方案?似乎NDepend无法分析c ++项目,但是当我使用CppDepends打开解决方案时,我在同一解决方案中为我的c#项目丢失了一些NPDepend功能.如果NDepend可以将CppDepend加载为插件/扩展名,那会很好,但这不可能吗?

ndepend cppdepend

9
推荐指数
1
解决办法
1385
查看次数

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

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

这是一个愚蠢的例子:

public bool IsThisFooScaredOfMonkeys(IFoo foo)
{
    if (foo is MyConcreteFoo)
    {
        return ((MyConcreteFoo)foo).BelievesMonkeysAreEvil;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

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

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

当然,关于如何使投射更快的任何其他想法同样会受到赞赏.

c# ndepend

8
推荐指数
1
解决办法
154
查看次数

如何查找仅通过测试调用的代码

偶尔我会看一些代码,我搜索一个方法的用法(使用resharper)并发现它只是通过测试调用.所以它实际上是多余的,我可以删除它和调用它的方法.

显然,在这个地方放置未使用的代码是没有意义的,这会降低构建速度和测试运行速度.我想要的是一个工具,可以告诉我生产代码的所有部分只能通过测试访问.

我有一个完整版的resharper,还有NDepend的试用版,但还没有找到如何使用其中任何一个来获得我想要的结果(不用付钱).我怀疑NDepend的完整版本可能是可能的,但还有其他人知道的工具吗?

如果上下文有帮助,解决方案是ASP.net网站,其功能大部分由WCF服务处理.因此,大部分代码的唯一有效入口点是服务方法.测试在他们自己的单独项目中.

我已经开始赏金了,因为我确信其他人必须拥有并解决过这个问题!

c# ndepend visual-studio-2008 resharper-5.0

8
推荐指数
1
解决办法
513
查看次数

用NUnit驱动NDepend

是否可以使用NUnit使用NDepend运行CQL查询?能够将NDepend dll包含在UnitTests库中并编写如下测试会很高兴:

[Test] public void
DomainAssemblyHasNoDatabaseDependencies
...
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

这样可以很容易地与Team City集成,并且如果任何静态分析测试失败,则会自动使构建失败.

build-automation teamcity nunit ndepend cqlinq

7
推荐指数
1
解决办法
291
查看次数

如何在类型属性上限制NDepend方法查询

我试图让NDepend使用标准的"方法太大"查询的修改版本来识别长方法.

我不想报告开发人员几乎无法控制的长方法,所以我使用DebuggerNonUserCode属性过滤掉生成的代码InitializeComponent().

不幸的是,我仍然得到一些误报,因为报告了生成类型中的方法.问题是虽然类型本身具有DebuggerNonUserCode属性,但方法没有,因此尽管它们是生成的,但它们仍包含在输出中.

我正在寻找类似于类型和方法之间的连接:给我所有没有DebuggerNonUserCode属性的类型并对其运行查询,但我无法弄清楚如何在CQL中表达这一点.

对于某些程序集,我可以简单地过滤全名,但不幸的是我们的一些程序集混合了开发人员制作和生成的类型.不幸的IsGeneratedByCompiler是,在这种情况下也不能使用.

我的查询

WARN IF Count > 0 IN SELECT METHODS WHERE 
   NbLinesOfCode > 30 AND
   !HasAttribute "System.Diagnostics.DebuggerNonUserCodeAttribute" AND
   !NameIs "InitializeComponent()"
   ORDER BY NbLinesOfCode DESC
Run Code Online (Sandbox Code Playgroud)

c# ndepend cql cqlinq

7
推荐指数
1
解决办法
1564
查看次数

NDepend:如何在依赖图中不显示"层"程序集?

我能够在早期版本的nDepend中执行此操作,方法是转到tools-> options并设置哪些程序集将成为分析的一部分(并忽略其余部分).nDepend试用版的最新版本允许我设置它,但它似乎忽略了设置并始终分析所有程序集是否我想要它.我试图删除"层"程序集,将它们移到"应用程序集"列表中,但当我将它们删除时,它们只会被添加回"层"列表,我不能忽略它.

我不希望我的依赖图包含像"system","system.xml"和"system.serialization!"这样的程序集.我只想在依赖图中使用MY程序集!或者这是付费版功能吗?

有没有办法做我正在谈论的事情?

dependencies assemblies ndepend graph

7
推荐指数
1
解决办法
791
查看次数

使用NDepend查找方法的所有用法(包括通过接口)

使用NDepend,我如何找到特定方法或属性的所有,直接和间接使用?

特别是,我需要找到通过使用路径某处的接口发生的用法.谢谢!

c# ndepend cqlinq

7
推荐指数
1
解决办法
1529
查看次数

为什么使用lambda进行列表初始化会导致高的圈复杂度?

使用lambdas初始化列表会导致高IL圈复杂度:为什么以及如何消除这种复杂性?例如,下面的代码导致类的静态构造函数(实际上是编译器生成的)非常复杂:1 +列表计数.

static List<Predicate<string>> list = new List<Predicate<string>>()
{
    s => s == null,
    s=> s.StartsWith(“R”),
    ... With a lot of predicates like that ….
};
Run Code Online (Sandbox Code Playgroud)

注意:复杂度用计算 NDepend

c# lambda ndepend cyclomatic-complexity

6
推荐指数
1
解决办法
927
查看次数

我可以告诉NDepend忽略一个结果吗?

我正在VS 2012中针对我的C#项目运行NDepend.我已经查看了一个特定的"严重违反规则",并决定我要保持原样.我想告诉NDepend忽略这一违规行为并且不计入我的关键规则违规计数,这样我就可以让底部的点不再是红色.

如果重要:它是"具有太多参数的功能".函数的目的是在数据库表中创建一个日志条目,我需要传入所有值(其中11个)来填充表(在对它们应用一些逻辑之后).我想我可以将所有值放入一个结构或类中,并将其作为单个值传递,但结构/类没有其他用途,而不是调用这个函数,所以这对我来说似乎有些愚蠢.

所以,我正在寻找一种方法来做一些事情,比如右键单击结果并选择"永久忽略此结果",就像你可能使用拼写检查一样,但我没有看到任何这样的选项.

有没有办法做到这一点?

我不想排除整个规则或修改它以增加参数的最大数量,因为可能存在我同意应该修改该函数的其他实例.

ndepend visual-studio-2012

6
推荐指数
1
解决办法
708
查看次数

NDepend依赖树的所有方法中的输出代码可用于特定方法吗?

我希望能够集成到我们的构建过程中,在每次构建之后与先前构建进行比较的能力,对特定方法列表的任何依赖关系进行任何代码更改.

因此,如果我有两个访问数据库的方法,我希望能够判断是否有任何方法调用这两个方法中的任何一个,在依赖树中一直有任何代码更改.

c# ndepend

6
推荐指数
1
解决办法
94
查看次数