C# 计算.NET核心项目的代码度量?
我在玩ASP.NET核心和.NET核心项目。对于经典的C#项目,VisualStudio2015具有计算代码度量的功能。对于.NET Core,Preview 2工具中缺少支持C# 计算.NET核心项目的代码度量?,c#,visual-studio,visual-studio-2015,.net-core,C#,Visual Studio,Visual Studio 2015,.net Core,我在玩ASP.NET核心和.NET核心项目。对于经典的C#项目,VisualStudio2015具有计算代码度量的功能。对于.NET Core,Preview 2工具中缺少支持 在工具更完整之前,有人知道解决方法吗?NDepend支持.NET core 此外,SonarQube还可以提供您正在寻找的一些指标(例如代码行数、圈复杂度)。根据,版本2.3+支持.NET Core它现在在VS 2019预览版1中提供,如下所示: 我将Microsoft.CodeAnalysis.FxCopAnalyze
在工具更完整之前,有人知道解决方法吗?NDepend支持.NET core
此外,SonarQube还可以提供您正在寻找的一些指标(例如代码行数、圈复杂度)。根据,版本2.3+支持.NET Core它现在在VS 2019预览版1中提供,如下所示:
我将Microsoft.CodeAnalysis.FxCopAnalyzers nuget包添加到.Net核心项目中。这使我可以右键单击并运行代码分析,这非常有效 下一个挑战是让CalculateCodeMetrics菜单选项正常工作 不幸的是,这仍然会产生错误: 计算目标文件的代码度量时出错 项目中的“.dll”。能够 不识别平台 坏消息是,Visual Studio 2017不会修复此问题,但它在Visual Studio 2019(当前预览版2)中的效果与预期一样 好消息是,我成功地使用github项目计算了指标。我克隆了repo()。然后构建解决方案。创建的工件之一是路径
\roslyn analyzers\artifacts\bin\Metrics\Debug\net46\Metrics.exe
打开命令提示符并运行Metrics.exe
将生成有用的帮助文本。请记住指定一个项目或sln文件和/out:.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.
用法:Metrics.exe
命令行参数的帮助:
/项目:[缩写:/p:]
要分析的项目。
/解决方案:[缩写:/s:]
要分析的解决方案。
/out:[缩写:/o:]
度量结果XML输出文件。
/安静[简短形式:/q]
使除错误报告之外的所有控制台输出静音。
/帮助[缩写:/?]
显示此帮助消息。
这将生成一个相当笨拙的XML文件,然后可以对该文件进行解析,以提取所需的度量。这有点痛苦,但对我来说很有效,因为我只想在一个相当广泛的.Net Core 2代码库上做一次一次性的分析 你可以试试反射器。它很旧了,所以不确定它是否还能用。。。还有NDepend,但它不是免费的。我已经使用试用版试用了NDepend(版本6.3.0)。不幸的是,我没有得到.NET核心项目的结果。您想要得到什么代码度量?测试覆盖率、复杂性?@TerribleDev:最初我想知道Visual Studio为经典.net项目提供的度量标准(可维护性指数、圈复杂度、继承深度、类耦合和代码行)。特别是我对代码行和圈复杂度感兴趣。正如你所提到的,测试覆盖率不再是问题。微软在vs 2019中尝试了aspnetcore项目,但在netcoreapp2.2的预览版1.0中,这个令人悲伤的答案似乎对我来说不起作用。它对你有什么作用,你有错误吗?没有错误,但也没有结果。我的vs 2019版本为16.1.2。aspnetcore v2.1我有16.2.0,也许就是这样。请更新并重试。