我希望能够将比较每次构建与上一次构建期间所做的任何依赖项代码更改的能力集成到我们的构建流程中,这些更改是针对特定方法列表进行的。因此,如果我有两种访问数据库的方法,我希望能够确定调用这两种方法之一的任何方法(一直到依赖树的最上层)是否有任何代码更改。
// <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
。
下面是代码查询的演示,带有下划线的方法表示自基准以来已更改的方法,加粗的方法表示自基准以来新增的方法。
你可以右键点击下划线的方法,并使用你偏好的差异工具查看源代码中的差异。