【问题标题】:Calculate Code Metrics for .NET Core Projects?计算 .NET Core 项目的代码指标?
【发布时间】:2016-11-12 04:48:08
【问题描述】:

我正在玩 ASP.NET Core 和 .NET Core 项目。对于经典的 C# 项目,Visual Studio 2015 具有计算代码指标的功能。对于 .NET Core,预览版 2 工具中缺少支持。

在工具更完整之前,有人知道解决方法吗?

【问题讨论】:

  • 你可以试试 Reflector CodeMetrics plugin。它已经很老了,所以不确定它是否仍然有效......还有 NDepend,但它不是免费的。
  • 我已经使用试用版试用了 NDepend(版本 6.3.0)。不幸的是,我没有得到 .NET Core 项目的结果。
  • 您想要获得哪些代码指标?测试覆盖率、复杂性?
  • @TerribleDev:最初我想了解 Visual Studio 为经典 .net 项目提供的指标(可维护性指数、圈复杂度、继承深度、类耦合和代码行数)。特别是我对代码行和圈复杂度感兴趣。您提到的测试覆盖率不再是问题。

标签: c# visual-studio visual-studio-2015 .net-core


【解决方案1】:

它现在可以在 VS 2019 Preview 1 中使用,根据这个:

https://developercommunity.visualstudio.com/idea/351625/netcore-code-metrics.html?childToView=404758

【讨论】:

  • 刚刚在 vs 2019 中尝试过 aspnetcore 项目,似乎无法正常工作
  • 在 netcoreapp2.2 的 Preview 1.0 中为我工作。它对你有什么作用,你有没有报错?
  • 没有错误,但也没有结果。我的 vs 2019 是 16.1.2 版本。 aspnetcore v2.1
  • 我有 16.2.0,也许就是这样。更新并重试。
【解决方案2】:

我将 Microsoft.CodeAnalysis.FxCopAnalyzers nuget 包添加到我的 .Net Core 项目中。这使我可以右键单击并运行代码分析,效果很好。

下一个挑战是让 Calculate Code Metrics 菜单选项起作用。

不幸的是,这仍然会产生错误:

计算目标文件的代码指标时出错 项目中的“.dll”。可以 不识别平台

坏消息是 Visual Studio 2017 不会修复此问题,但它在 Visual Studio 2019(当前为预览版 2)中可以正常工作。

好消息我设法使用Roslyn Analyzers github 项目计算指标。我克隆了 repo (https://github.com/dotnet/roslyn-analyzers.git)。然后构建解决方案。创建的工件之一是路径 <your dev root>\roslyn-analyzers\artifacts\bin\Metrics\Debug\net46\Metrics.exe 中的 Metrics.exe

打开命令提示符并运行Metrics.exe 会产生有用的帮助文本。记得指定项目或sln文件和/out:<metrics fine name>.xml

Usage: Metrics.exe <arguments>

Help for command-line arguments:

/project:<project-file>  [Short form: /p:<project-file>]
Project(s) to analyze.

/solution:<solution-file>  [Short form: /s:<solution-file>]
Solution(s) to analyze.

/out:<file>  [Short form: /o:<file>]
Metrics results XML output file.

/quiet  [Short form: /q]
Silence all console output other than error reporting.

/help  [Short form: /?]
Display this help message.

这会生成一个相当笨拙的 XML 文件,然后可以对其进行解析以提取您所追求的指标。这有点痛苦,但对我有用,因为我只想对相当广泛的 .Net Core 2 代码库进行一次性分析。

【讨论】:

    【解决方案3】:

    NDepend 支持 .NET 核心 as per this

    此外,SonarQube 可以提供您正在寻找的一些指标(例如代码行、圈复杂度)。根据release notes,2.3+版本支持.NET Core

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 2012-07-29
      • 2015-03-20
      • 2023-04-06
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多