繁体   English   中英

如何在NDepend中测量RFT指标?

[英]How to measure RFT metric in NDepend?

NDepend是否有直接方法通过CQL测量RFC (RFT)? 还是我们必须编写CQL查询来对自己使用的类(类型)中的递归计数调用方法进行计数? 如果是这样,它看起来如何? 类似吗?

这确实有可能要归功于神奇的FillIterative()方法。 唯一的问题是此代码查询可能需要几秒钟才能运行,并且您可能需要调整查询超时(默认设置为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度量,而且还可以获得基于代码行(即响应中方法的LoC之和)的RFT,并且还可以针对每种类型列出所有反应中的方法。

NDepend代码查询RFT响应的类型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM