【问题标题】:How to get the length of a identifier/method in C#?如何在 C# 中获取标识符/方法的长度?
【发布时间】:2020-04-05 09:47:47
【问题描述】:
我正在尝试获取在 ASP.NET Core 2.2 中制作的项目的所有标识符和方法的长度,以便分析作业的代码指标,但我还没有找到任何类型的工具提供该指标。
到目前为止,我已经使用了 Visual Studio 2019 的 Code Metrics,并且得到了下一个指标:
我想知道是否有任何工具可以提供我正在寻找的指标。
【问题讨论】:
标签:
c#
visual-studio
metrics
code-metrics
software-quality
【解决方案1】:
您可以使用工具NDepend 来计算identifierLength 指标。 NDepend 还支持更多code metrics。
例如你可以写这个C# LINQ code query。您可以尝试下载完整功能的试用版。
from m in Application.Methods
select new { m, identifierLength = m.SimpleName.Length }
免责声明:我为 NDepend 工作
【解决方案2】:
使用反射 API,您可以使用Assembly.GetTypes() 获取程序集中的所有类型。
对于每种类型,您都可以使用Type.GetMethods() 获取所有方法。
对于每种方法,您都可以获得MethodBody 和MethodInfo.GetMethodBody()。
然后您可以在每个 MethodBody 上调用 GetILAsByteArray() 以将 IL 作为字节数组获取。
这是原始字节码,但您可以使用该字节数组的长度作为指标。
如果你想用 C# 来分析代码,你需要用 Reflector 之类的东西从 IL 中反汇编它。