如何使用 NDepend 查看代码指标 lke Fan-In/Fan-Out
How to view Code Metrics lke Fan-In/Fan-Out with NDepend
我已经安装了 NDepend(14 天试用版)作为 Visual Studio 2015 扩展,现在可以使用了。
我想在我的解决方案中获得一些 classes 的指标:
- 标识符的长度
- 扇入/扇出
- class
的加权法
- class 个对象的耦合
我在它的官方网站上没有找到任何有用的说明,有人知道吗?
谢谢。
您可以编写 C# LINQ code queries 以获得您需要的几乎所有代码指标。
标识符的长度
from t in Application.Types
select new { t, t.SimpleName.Length }
扇入/扇出
from t in Application.Types
select new { t, t.TypesUsed, t.TypesUsingMe }
class
的加权法
from t in Application.Types
select new { t, t.CyclomaticComplexity }
class 个对象的耦合(根据 this definition)
from n in Application.Namespaces
let NumberOfClasses = n.ChildTypes.Count()
let NumberOfLinks = n.ChildTypes.SelectMany(t => t.TypesUsed).Distinct().Count()
select new { n, CBO = NumberOfLinks / (float)NumberOfClasses }
然后您可以将代码查询转换为带有前缀 warnif count > 0
的代码规则,并保存规则以在您的 BuildProcess Visual Studio and/or 中执行它。
// <Name>Type name shouldn't exceed 25 char</Name>
warnif count > 0
from t in Application.Types
where t.SimpleName.Length > 25
orderby t.SimpleName.Length descending
select new { t, t.SimpleName.Length }
我已经安装了 NDepend(14 天试用版)作为 Visual Studio 2015 扩展,现在可以使用了。
我想在我的解决方案中获得一些 classes 的指标:
- 标识符的长度
- 扇入/扇出
- class 的加权法
- class 个对象的耦合
我在它的官方网站上没有找到任何有用的说明,有人知道吗?
谢谢。
您可以编写 C# LINQ code queries 以获得您需要的几乎所有代码指标。
标识符的长度
from t in Application.Types
select new { t, t.SimpleName.Length }
扇入/扇出
from t in Application.Types
select new { t, t.TypesUsed, t.TypesUsingMe }
class
的加权法from t in Application.Types
select new { t, t.CyclomaticComplexity }
class 个对象的耦合(根据 this definition)
from n in Application.Namespaces
let NumberOfClasses = n.ChildTypes.Count()
let NumberOfLinks = n.ChildTypes.SelectMany(t => t.TypesUsed).Distinct().Count()
select new { n, CBO = NumberOfLinks / (float)NumberOfClasses }
然后您可以将代码查询转换为带有前缀 warnif count > 0
的代码规则,并保存规则以在您的 BuildProcess Visual Studio and/or 中执行它。
// <Name>Type name shouldn't exceed 25 char</Name>
warnif count > 0
from t in Application.Types
where t.SimpleName.Length > 25
orderby t.SimpleName.Length descending
select new { t, t.SimpleName.Length }