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

时间:2015-08-04 20:15:35

标签: c# ndepend

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

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

1 个答案:

答案 0 :(得分: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

您可以使用首选的差异工具右键单击带有下划线的方法ask to see diff in source code

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

enter image description here

相关问题