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

Dav*_*enn 6 c# ndepend

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

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

Pat*_*eam 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  }
Run Code Online (Sandbox Code Playgroud)

当然,warnif count > 0如果您愿意,您可以使用前缀将其转换为规则。

这是此代码查询的实际操作,下划线方法是自基线以来代码发生更改的方法,粗体方法是自基线以来添加的方法。

NDepend 调用依赖树 diff 方法

您可以右键单击带下划线的方法,要求使用您喜欢的比较工具查看源代码中的差异。

您还可以将结果导出到图表(按钮导出到图表),但随后您可能会得到不相交的图表,因为未更改的方法将丢失:

在此输入图像描述