如何为 C#/.NET 强制执行代码样式,例如 IDE0058、IDE0059 和 IDE0060?

How can I enforce code styles for C#/.NET, like IDE0058, IDE0059 and IDE0060?

我正在研究强制代码样式,并开始在我的 .editorconfig 中实现 IDE0058, IDE0059 and IDE0060,如下所示:

csharp_style_unused_value_expression_statement_preference = discard_variable:error
csharp_style_unused_value_assignment_preference = discard_variable:error
dotnet_code_quality_unused_parameters = all:error

当我在 windows 上 运行 构建 visual studio 2022 时,我确实遇到了错误,尽管构建仍然成功。 但是,当我从命令行 运行 dotnet build 时,我没有收到任何错误,当我搜索样式代码时,我找不到任何提及它们的信息。

我同事在他的mac书上测试过,visual studio的mac版本没有报错。命令行也没有。

在我们的 gitlab 管道中我们也 运行 dotnet build,它也没有任何错误地通过了。

在所有环境中,我们都使用 .NET 6.0。

是否可以使用 .editorconfig 强制执行这些代码样式?如果是,怎么做?

如果不是,如何强制执行代码风格?

您需要启用项目属性:

  1. 右键单击项目
  2. 点击“构建”
  3. Treat warnings as errors设为All:

但是,如果您这样做,它只会添加到可能是 Debug 的当前配置。

对于两种配置(DebugRelease),您可以通过 UI 手动完成。

或者您可以编辑 .csproj 文件。

如果您通过 UI 设置 Treat warnings as errors: All,这将被添加。

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <WarningsAsErrors />
  </PropertyGroup>

您可以复制它并更改配置:

如果您通过 UI 设置 Treat warnings as errors: All

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> // Changed `Debug` to `Release`
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <WarningsAsErrors />
  </PropertyGroup>

将以下行添加到 csproj 文件

<PropertyGroup>
    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
    <AnalysisLevel>6.0-recommended</AnalysisLevel>
</PropertyGroup>

然后在 editorconfig 中除了您现有的规则之外添加

dotnet_diagnostic.IDE0058.severity = error
dotnet_diagnostic.IDE0059.severity = error
dotnet_diagnostic.IDE0060.severity = error