如何使用 NDepend 计算方法的度量响应
How to compute the metric Response for a Method with NDepend
是否有任何方法可以获取调用嵌套函数可能产生的“源代码行”数?
这个问题我举个例子:
函数选择
Function name
Lines of Code (LOC) [function body]
Function1
10
Function2
20
Function3
20
示例 1
函数 1
...|-> 调用 Function2
......|-> 调用 Function3
LOC总和= 50
示例 2
函数 1
...|-> 调用 Function3
......|-> 调用 Function2
LOC总和= 50
示例 3
函数 1
..|-> 调用 Function2
..|-> 调用 Function3
..|-> 调用 Function2
LOC总和= 70
这是一个代码查询,它为代码库的每个方法计算响应:
from m in Application.Methods
let methodsCalledMetric =
m.MethodsCalled.FillIterative(
methods => methods.SelectMany(mm => mm.MethodsCalled))
let methodsCalled = methodsCalledMetric.DefinitionDomain
let responseLoc = methodsCalled.Sum(mm => mm.NbLinesOfCode)
select new { m, methodsCalled, responseLoc }
结果如下:
可以列出任何方法调用的方法集(例如,通过单击 136 方法 单元格)或导出到依赖关系图以更清晰地可视化它:
是否有任何方法可以获取调用嵌套函数可能产生的“源代码行”数?
这个问题我举个例子:
函数选择
Function name | Lines of Code (LOC) [function body] |
---|---|
Function1 | 10 |
Function2 | 20 |
Function3 | 20 |
示例 1
函数 1
...|-> 调用 Function2
......|-> 调用 Function3
LOC总和= 50
示例 2
函数 1
...|-> 调用 Function3
......|-> 调用 Function2
LOC总和= 50
示例 3
函数 1
..|-> 调用 Function2
..|-> 调用 Function3
..|-> 调用 Function2
LOC总和= 70
这是一个代码查询,它为代码库的每个方法计算响应:
from m in Application.Methods
let methodsCalledMetric =
m.MethodsCalled.FillIterative(
methods => methods.SelectMany(mm => mm.MethodsCalled))
let methodsCalled = methodsCalledMetric.DefinitionDomain
let responseLoc = methodsCalled.Sum(mm => mm.NbLinesOfCode)
select new { m, methodsCalled, responseLoc }
结果如下:
可以列出任何方法调用的方法集(例如,通过单击 136 方法 单元格)或导出到依赖关系图以更清晰地可视化它: