简体   繁体   English

.NET 6 代码分析器 CodeAnalysisTreatWarningsAsErrors 中断

[英].NET 6 Code analyzer CodeAnalysisTreatWarningsAsErrors breaking

We are trying to enable to .NET 6 Code Analyzer on our .NET 472 projects.我们正在尝试在我们的 .NET 472 项目上启用 .NET 6 代码分析器。 In most projects we have WarningsAsErrors set to true.在大多数项目中,我们将 WarningsAsErrors 设置为 true。 We dont want to CA warnings to report as an error, so we added CodeAnalysisTreatWarningsAsErrors as false.我们不希望 CA 警告报告为错误,因此我们将 CodeAnalysisTreatWarningsAsErrors 添加为 false。

When doing so, all the CA warnings are no longer reported这样做时,不再报告所有 CA 警告

We now use the following settings我们现在使用以下设置

  <PropertyGroup> 
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <EnableNETAnalyzers>true</EnableNETAnalyzers>
    <AnalysisLevel>latest-recommended</AnalysisLevel>
    <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
    <WarningsNotAsErrors>$(WarningsNotAsErrors);CS8073;CS8882;CS8887;CS8848</WarningsNotAsErrors>
  </PropertyGroup>

Without the settings, we have 0 warnings.没有设置,我们有 0 个警告。 With these settings, only a few additional CS warnings are triggered, the ones we had to add in the WarningsNotAsErrors使用这些设置,只会触发一些额外的 CS 警告,即我们必须在 WarningsNotAsErrors 中添加的警告

If i remove the CodeAnalysisTreatWarningsAsErrors property and set TreatWarningsAsErrors to false, i get 1700 CA warnings in our code base.如果我删除 CodeAnalysisTreatWarningsAsErrors 属性并将 TreatWarningsAsErrors 设置为 false,我会在我们的代码库中收到 1700 条 CA 警告。 I would expect to see these 1700 warnings with above settings as well.我希望看到这些 1700 条带有上述设置的警告。 When i set CodeAnalysisTreatWarningsAsErrors to true, i get 1700 errors.当我将 CodeAnalysisTreatWarningsAsErrors 设置为 true 时,出现 1700 个错误。

I am using this in my global.json file我在我的 global.json 文件中使用它

{
    "sdk": {
        "version": "6.0.300",
        "rollForward": "latestFeature"
    }
}

and have sdk's 6.0.300 and 6.0.401 installed, along with VS 17.2并安装了 sdk 的 6.0.300 和 6.0.401,以及 VS 17.2

Why is CodeAnalysisTreatWarningsAsErrors breaking our code analysis scan?为什么 CodeAnalysisTreatWarningsAsErrors 会破坏我们的代码分析扫描? Any advice would be helpful.任何意见将是有益的。

Edit: adding images编辑:添加图像在此处输入图像描述

在此处输入图像描述

VS shows it wants to treat them as warning: VS 表明它想将它们视为警告: 在此处输入图像描述

I set TreatWarningsAsErrors and CodeAnalysisTreatWarningsAsErrors to true or false for Combinatorial testing.我将TreatWarningsAsErrorsCodeAnalysisTreatWarningsAsErrors设置为truefalse以进行组合测试。 Below are several test results.下面是几个测试结果。

Situation 1情况一

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

This returns all CS errors.这将返回所有 CS 错误。

Situation 2情况二

<TreatWarningsAsErrors>false </TreatWarningsAsErrors>

This returns all CS warnings.这将返回所有 CS 警告。

Situation 3情况三

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>latest-recommended</AnalysisLevel>

Situation 4情况4

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>latest-recommended</AnalysisLevel>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>

Both 3 and 4 returns CS and CA errors. 3 和 4 都返回 CS 和 CA 错误。 在此处输入图像描述

Situation 5情况五

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>latest-recommended</AnalysisLevel>
<CodeAnalysisTreatWarningsAsErrors>false </CodeAnalysisTreatWarningsAsErrors>

This returns CS errors and CA warnings.这将返回 CS 错误和 CA 警告。 在此处输入图像描述

Situation 6情况 6

<TreatWarningsAsErrors>false </TreatWarningsAsErrors>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>latest-recommended</AnalysisLevel>
<CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors> (Or it can be removed)

This returns CA and CS warnings.这将返回 CA 和 CS 警告。 在此处输入图像描述

From your description,从你的描述来看,

I would expect to see these 1700 warnings with above settings as well.我希望看到这些 1700 条带有上述设置的警告。

My understanding is that if you want to see warnings, you can follow situation 6. I'm afraid you can't see these 1700 warnings with above settings as well.我的理解是,如果你想看到warnings,你可以按照情况6进行。恐怕你用上面的设置也看不到这1700个warnings。

<TreatWarningsAsErrors>true</TreatWarningsAsErrors> <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>)

But I'm not sure exactly what your question is from your last paragraph.但我不确定你最后一段的问题是什么。 If there is any misunderstanding, please feel free to let me know.如果有任何误解,请随时告诉我。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM