代码度量标准 - 静态类和方法计数

时间:2016-02-17 17:38:07

标签: c# .net visual-studio-2013 code-metrics

我很想知道Visual Studio 2013解决方案中有多少静态方法和静态类。我们有很多项目......

Visual Studio内置的内容是否可以执行此操作?我无法在Code Metrics窗口中看到任何可以计算的内容。

我知道我可以使用Ctrl + F来搜索静态类(使用RegEx进行静态类比较棘手)。对于方法来说这也很棘手。所以我得到350个左右的静态类。

我对此的唯一想法就是写自己的基于反射的检查。

2 个答案:

答案 0 :(得分:3)

使用ctrl -f并使用"查看:整个解决方案",您可以使用此正则表达式搜索静态方法

^\s*(public\s+|internal\s+|private\s+)?static\s+([a-zA-Z0-9_\<\>\.\:]+)\s+([a-zA-Z0-9_\<\>]+)\s*\(.*\)

这适用于静态类

^\s*(public\s+|internal\s+|private\s+)?static\s+class

为了对没有误报更有信心,您可以将搜索限制为仅查看* .cs文件。在&#34;找到结果&#34;的底部你会看到&#34;匹配线:&#34;随着它的计数。

我看到的限制:

  • 方法或类声明中的新行会破坏搜索。这可以通过在上面的正则表达式中的每个标记之后添加(\r?\n)?来修复。
  • 无法检测到块评论或#ifdef 0。我不认为有一个简单的方法可以解决这个问题,而无需使用Roslyn(例如)进行更彻底的解析,或者像你在问题中那样使用反射进行编译。

答案 1 :(得分:1)

工具NDepend带有code query language based on C# LINQ +它与VS2010,2012,2013,2015集成。

具体地说,要知道项目有多少静态类和静态方法,只需要编辑两个代码查询:

from t in Application.Types where t.IsStatic select new { t, t.NbLinesOfCode }

from m in Application.Methods where m.IsStatic select new { m, m.NbLinesOfCode }

查询是实时编译的,列出了匹配的代码元素。

请注意,代码查询语言可用于编写代码规则。大约200 default code rules and queries are provided

NDepend code query to list static methods

要获取静态类型的百分比,您可以编写查询:

(Application.Types.Count(t => t.IsStatic) * 100f / Application.Types.Count())
.ToEnumerable().Sum()

要获取静态类型中代码行的百分比,您可以编写查询:

(Application.Types.Where(t => t.IsStatic).Sum(t => t.NbLinesOfCode) * 100f / Application.Types.Sum(t => t.NbLinesOfCode))
.ToEnumerable().Sum()

免责声明:我为NDepend工作