【问题标题】: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 工作

    【讨论】:

    • 谢谢,这就是我要找的。​​span>
    【解决方案2】:

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

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

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

    然后您可以在每个 MethodBody 上调用 GetILAsByteArray() 以将 IL 作为字节数组获取。

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

    如果你想用 C# 来分析代码,你需要用 Reflector 之类的东西从 IL 中反汇编它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 2010-11-15
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多