我想简化代码分析,并在多个项目和团队中使用重复的规则。
我们曾经通过拥有一个将分析器导入项目(例如Microsoft.CodeAnalysis.FxCopAnalyzers和StyleCop.Analyzers)的NuGet程序包来做到这一点,并定义了一个规则集来定义VS如何处理每个规则(错误,警告等)。
我一直在尝试使用通用的.editorconfig文件而不是规则集进行设置。问题是,当从共享文件夹导入.editorconfig文件时,似乎会忽略以下设置。
dotnet_diagnostic.CA1062.severity = error
为了测试这一点,我有一个非常简单的场景来说明问题。
.editorconfig文件如下:
[*.cs]
dotnet_diagnostic.CA1062.severity = error
#dotnet_code_quality.null_check_validation_methods = NotNull
现在,此文件将像这样导入csproj中:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<Import Project="..\..\_Shared\Build.props" />
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.4">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
Build.props是这样的:
<Project>
<PropertyGroup>
<SkipDefaultEditorConfigAsAdditionalFile>true</SkipDefaultEditorConfigAsAdditionalFile>
</PropertyGroup>
<ItemGroup Condition="Exists('$(MSBuildThisFileDirectory)\.editorconfig')" >
<AdditionalFiles Include="$(MSBuildThisFileDirectory)\.editorconfig" />
</ItemGroup>
</Project>
以下代码应在CA1062上触发错误:
public int Calculate(InputData input)
{
SmartGuard.NotNull(nameof(input), input);
if (this.Multiply)
{
return input.Value * 2;
}
else
{
return input.Value + 2;
}
}
但是结果是警告:
现在,如果我更改.editorconfig并取消注释第二行:
[*.cs]
dotnet_diagnostic.CA1062.severity = error
dotnet_code_quality.null_check_validation_methods = NotNull
错误正在发生,这意味着null_check_validation_methods
正在考虑该错误。
为什么dotnet_diagnostic.CA1062.severity = error
被忽略?
.editorconfig机制的此问题和其他问题在以下问题中进行了报告:
这些问题已经解决,并且通过实施这些问题中引用的建议可以解决原始问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句