如何在 C# 中获取 identifier/method 的长度?

How to get the length of a identifier/method in C#?

我正在尝试获取在ASP.NET Core 2.2 中创建的项目的所有标识符和方法的长度,以便分析作业的代码指标,但我没有找到任何提供该指标的一种工具。

到目前为止,我使用了 Visual Studio 2019 年的代码指标,我得到了下一个指标:

我想知道是否有任何工具可以提供我正在寻找的指标。

使用反射API,你可以用Assembly.GetTypes()获取程序集中的所有类型。

对于每种类型,您可以使用 Type.GetMethods() 获得所有方法。

对于每种方法,您都可以获得 MethodBodyMethodInfo.GetMethodBody()

然后您可以在每个 MethodBody 上调用 GetILAsByteArray() 以获取字节数组形式的 IL。

这是原始字节码,但您可以使用该字节数组的长度作为度量标准。

如果您想将代码作为 C# 进行分析,则需要使用 Reflector 之类的工具将其从 IL 反汇编。

您可以使用工具 NDepend to compute the identifierLength metric. NDepend also supports many more code metrics

例如你可以这样写C# LINQ code query。您可以下载可下载的全功能试用版。

from m in Application.Methods
select new { m, identifierLength = m.SimpleName.Length }

免责声明:我为 NDepend

工作