C# 如何在NDepend中度量RFT度量?

C# 如何在NDepend中度量RFT度量?,c#,metrics,cql,ndepend,C#,Metrics,Cql,Ndepend,是否有直接测量(RFT)的方法?或者我们必须为自己使用的类(类型)中递归计数调用的方法编写CQL查询吗?如果是的话,它看起来怎么样?与?类似,由于神奇的方法,这确实是可能的。唯一的问题是,此代码查询可能需要几秒钟才能运行,您可能需要调整查询超时(每个默认设置为2秒)。请注意,这种性能代价是由于RFT定义造成的,它不是来自所用算法的问题 代码如下: // <Name>RFT</Name> from t in Application.Types where !t.IsInte

是否有直接测量(RFT)的方法?或者我们必须为自己使用的类(类型)中递归计数调用的方法编写CQL查询吗?如果是的话,它看起来怎么样?与?

类似,由于神奇的方法,这确实是可能的。唯一的问题是,此代码查询可能需要几秒钟才能运行,您可能需要调整查询超时(每个默认设置为2秒)。请注意,这种性能代价是由于RFT定义造成的,它不是来自所用算法的问题

代码如下:

// <Name>RFT</Name>
from t in Application.Types
where !t.IsInterface && !t.IsEnumeration
let methodsUsedDirectly = 
   t.TypesUsed
    .Where(tUsed => !tUsed.IsThirdParty)
    .ChildMethods()
    .Where(m => m.IsUsedBy(t))

let methodsUsedIndirectly = methodsUsedDirectly
   .FillIterative(
         methods => methods.SelectMany(
                         m => m.MethodsCalled
                               .Where(mCalled => !mCalled.IsThirdParty))
   )
   .DefinitionDomain.ToArray()

let rftLoC = methodsUsedIndirectly.Sum(m=>m.NbLinesOfCode)

select new { t, 
   methodsUsedDirectly, 
   methodsUsedIndirectly,
   rft = methodsUsedIndirectly.Length,
   rftLoC }
//RFT
从应用程序中的t开始。类型
哪里t、 i接口&!t、 等计数
让methodsUsedDirectly=
t、 打字
.Where(tUsed=>!tUsed.IsThirdParty)
.ChildMethods()
其中(m=>m.IsUsedBy(t))
设methodsUsedDirectly=methodsUsedDirectly
.Fill先生(
methods=>methods.SelectMany(
m=>m.MethodsCalled
.Where(mcall=>!mcall.IsThirdParty))
)
.DefinitionDomain.ToArray()的定义
设rftLoC=methodsusedindirective.Sum(m=>m.NbLinesOfCode)
选择新的{t,
方法直接,
方法直接使用,
rft=直接使用的方法。长度,
rftLoC}
通过运行此查询,不仅可以获得每种类型的RFT度量,还可以获得代码行(即响应中方法的LoC之和)的RFT,还可以为每种类型列出响应中的所有方法