[英]How to configure C# solutions to fail on any code style violations?
我创建了一个示例 Web API 项目,并希望在我的 CI 管道期间强制执行编码约定(如果在开发过程中出现样式错误,则可以加分)。 基本上我只想为 C# 项目设置 eslint(来自 JavaScript 世界)。
我想在解决方案范围内强制执行这些规则,所以我在根目录中添加了一个Directory.Build.props文件,其中包含以下内容(我想使用Roslyn 分析器并在警告中失败)
<Project>
<PropertyGroup Label="Compiler Settings">
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
<AnalysisLevel>latest</AnalysisLevel>
<WarningLevel>5</WarningLevel>
</PropertyGroup>
</Project>
接下来,我安装了dotnet 格式以访问dotnet format ./MySln.sln --verify-no-changes
命令。
我将生成的WeatherForecastController修改为
using Microsoft.AspNetCore.Mvc;
using System;
namespace LinterCheckSample.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
string unused = "";
return
new
List
<
WeatherForecast
>
()
{
new WeatherForecast() {}
};
}
private void Do() { }
}
运行格式命令时,我预计会出现以下情况,其中一些已被识别
System
的冗余导入❌Summaries
✅Summaries
的冗余数组创建表达式 ❌_logger
从未使用过 ❌unused
过 ✅WeatherForecast
的冗余类型规范 ❌Get
方法中的空行 ❌Get
方法中的缩进 ❌Do
从未使用过 ❌我认为我缺少的一件事是 .editorconfig 文件? 我将Roslyn Analyzers .editorconfig复制粘贴到我的项目中,这有点帮助(它没有抓住所有这些)
如果我的方法是正确的方法,有什么可以改进的吗? ( Directory.Build.props
文件)并且有一个官方的超级严格的 .editorconfig 吗?
如果我的方法是错误的,那么在 C# 世界中解决这个问题的正确方法是什么?
提前致谢
使用 R# 命令行工具无法实现的 AFAIK。
对于 Roslyn 分析器,它可以帮助在您的csproj
文件中设置TreatWarningsAsErrors
:
<PropertyGroup>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
不要更改您的.csproj
文件。 在解决方案目录中,添加一个Directory.Build.props文件,其中包含以下内容:
<Project>
<PropertyGroup Label="Compiler Settings">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
<WarningLevel>5</WarningLevel>
</PropertyGroup>
</Project>
根据您的需要调整设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.