代码指标 - 静态 类 和方法计数

Code Metrics - Static classes and methods count

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

Visual Studio 是否有内置的东西可以做到这一点?我在代码指标 window 中看不到任何与此相关的内容。

我知道我可以使用 Ctrl+F 搜索静态 class(使用 RegEx 搜索静态 class 有点棘手)。这对于方法来说也很棘手。所以我得到 350 左右的静态 classes.

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

使用 ctrl-f 并使用 "Look in: Entire Solution",您可以使用此正则表达式搜索静态方法

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

这是静态的 classes

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

为了更加确信没有误报,您可以将搜索限制为仅在 *.cs 文件中查找。在 "Find Results" 的底部,您会看到 "Matching lines:" 以及后面的计数。

我看到的限制:

  • 方法或 class 声明中的新行会中断搜索。这可以通过在上面的正则表达式中的每个标记后添加 (\r?\n)? 来解决。
  • 块注释或 #ifdef 0 将不会被检测到。如果不使用 Roslyn(例如)更彻底地解析它,或者像您在问题中所说的那样编译它并使用反射,我认为没有解决这个问题的简单方法。

工具 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.

左右

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

(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

工作