如何通过命令行使用Microsoft.CodeAnalysis.NetAnalyzers执行.NET应用代码分析
解决方案
- 第一步:修改项目配置
编辑你的 .NET Core 3.1 控制台应用对应的 .csproj 项目文件,在<PropertyGroup>节点中添加如下配置,启用构建时自动运行分析、并将分析问题按规则级别拦截构建:
<PropertyGroup> <!-- 构建时自动触发代码分析 --> <RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild> <!-- 代码分析告警转为错误,触发后直接中断构建,可根据需要调整 --> <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors> <!-- 指定分析规则集版本,适配当前框架版本即可 --> <AnalysisLevel>latest</AnalysisLevel> </PropertyGroup>
- 第二步:命令行执行代码分析
.NET Core 3.1 版本可直接通过 build 命令触发分析,输出所有问题到控制台:
- 若需要完整构建同时跑分析,执行:
dotnet build 你的项目/解决方案路径 - 若仅需单独跑代码分析不执行完整构建流程,执行:
dotnet build 你的项目/解决方案路径 /t:Analyze
只要存在符合错误级别的代码分析问题,命令会返回非0退出码,CI流程会自动中断后续步骤,效果和TypeScript项目的ESLint检查一致。
- 第三步(可选):自定义规则严重级别
如果你不需要将所有分析告警都转为错误,可在项目根目录新增.editorconfig文件,单独调整每条规则的严重级别,示例配置如下:
# 将CA1822规则设为错误级别,触发即中断构建 dotnet_diagnostic.CA1822.severity = error # 将CA1050规则设为警告级别,仅输出不中断构建 dotnet_diagnostic.CA1050.severity = warning # 忽略CA1707规则,不输出也不拦截 dotnet_diagnostic.CA1707.severity = none
注意:请确保你安装的
Microsoft.CodeAnalysis.NetAnalyzersNuGet 包版本兼容 .NET Core 3.1,推荐使用5.x系列版本,更高版本可能依赖更高的.NET运行时无法正常工作。
内容的提问来源于stack exchange,提问作者Dmitry Mishin
相关产品推荐
相关产品推荐

