我很想知道Visual Studio 2013解决方案中有多少静态方法和静态类。我们有很多项目......
Visual Studio内置的内容是否可以执行此操作?我无法在Code Metrics窗口中看到任何可以计算的内容。
我知道我可以使用Ctrl + F来搜索静态类(使用RegEx进行静态类比较棘手)。对于方法来说这也很棘手。所以我得到350个左右的静态类。
我对此的唯一想法就是写自己的基于反射的检查。
答案 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。
要获取静态类型的百分比,您可以编写查询:
(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工作