能否让NDepend输出特定方法及其依赖树上所有方法的代码?

6
我希望能够将比较每次构建与上一次构建期间所做的任何依赖项代码更改的能力集成到我们的构建流程中,这些更改是针对特定方法列表进行的。因此,如果我有两种访问数据库的方法,我希望能够确定调用这两种方法之一的任何方法(一直到依赖树的最上层)是否有任何代码更改。
1个回答

4
这样的代码查询应该能满足您的需求:
// <Name>Methods that call Parse(String) or get_TestName() and that was added or where cpde was changed</Name>
from m in Methods 
let depth0 = m.DepthOfIsUsing("NUnit.Core.RuntimeFramework.Parse(String)")
let depth1 = m.DepthOfIsUsing("NUnit.Core.Test.get_TestName()")
where (depth0  >= 0 || depth1 >= 0)
   && (m.CodeWasChanged() || m.WasAdded())

orderby (depth0 != null ? depth0 : depth1)
select new { m, depth0, depth1  }

当然,如果你想要将其转化为规则,你可以使用前缀warnif count > 0

下面是代码查询的演示,带有下划线的方法表示自基准以来已更改的方法,加粗的方法表示自基准以来新增的方法。

NDepend calls in dependency tree diff methods

你可以右键点击下划线的方法,并使用你偏好的差异工具查看源代码中的差异
你也可以将结果导出为图形(按钮导出到图形),但这样可能会得到不连续的图形,因为未更改的方法将会缺失。

enter image description here


谢谢,我会下载试用版并看看效果。 - David Penn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接