我有一个设置,其中Visual Studio 2010运行测试覆盖率分析,并且它的输出在集成构建期间被NDepend吸收.
一些程序集包含NDepend需要忽略的生成代码.
有没有办法做到这一点?最好是整个命名空间.
使用NDepend,我如何找到特定方法或属性的所有,直接和间接使用?
特别是,我需要找到通过使用路径某处的接口发生的用法.谢谢!
是否可以使用NUnit使用NDepend运行CQL查询?能够将NDepend dll包含在UnitTests库中并编写如下测试会很高兴:
[Test] public void
DomainAssemblyHasNoDatabaseDependencies
...
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
这样可以很容易地与Team City集成,并且如果任何静态分析测试失败,则会自动使构建失败.
我试图让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) 我意识到这个问题正在寻找的查询不足以找到IDisposable实现的每个小问题,但每个早期警告都很重要,所以我会采取我能得到的.
我想知道是否有人为NDepend提出了一个CQL查询,它将列出所有没有实现IDisposable的类,但是有一个或多个字段.一个类可能通过一个bug(即有人忘了检查IDisposable实现的字段类型)或者通过代码进化(或者某个字段中使用的类在某个地方获得IDisposable)来结束此查询的结果列表.以后的日期没有更新所有用法).
查找未实现IDisposable的所有类的简单查询是:
SELECT TYPES WHERE !Implement "System.IDisposable"
Run Code Online (Sandbox Code Playgroud)
但是,这当然不会检查类是否应该为上述规则实现IDisposable.
有没有人有这样的疑问?我仍然在掌握CQL,所以这部分让我无法理解.
我在NDepend上遇到一点问题而不是忽略生成的代码.在创建实体数据模型时,它会在EF生成的designer.cs文件中查找围绕方法的问题.该类注释了"自动生成"注释,但仍被NDepend选中.
我似乎无法找到如何强制*.designer.cs被忽略,甚至忽略没有外卡的特定文件.我最接近的是几年前的这篇文章,其中帕特里克提到计划这样做,但仅此而已.
我错过了什么吗?有没有简单的方法来排除这个?
我有一个NDepend版本用于构建服务器,并自动生成NDepend报告.因此,每晚构建都会发挥作用,并生成NDepend报告/ XML.我现在想要做的是跟踪一些时间因素的指标.
因此,例如,在y轴上具有特定类型或命名空间(例如,传入耦合)的图形与x轴上的时间可能是很好的.我知道我可以比较两个NDepend构建并具有代码和度量差异,但我想要做的是比较相同的单个度量或N个构建的度量以查看正在进行的趋势.
我有点假设当前没有一个工具可以做到这一点,而且我必须自己动手,但如果有一个,我肯定喜欢在投入时间之前听到它.那么,NDepend本身是否支持这样的东西,或者是否存在某些我可以使用的实用工具?
除了NDepend之外,我也愿意接受其他可以实现这一目标的技术建议,尽管由于已经投入了NDepend并熟悉它的工作方式,我对NDepend有很强的偏好.
提前致谢.