Проблема с использованием общего файла .editorconfig (импортированного в csproj) в Visual Studio 2019 Preview 4 - PullRequest
0 голосов
/ 20 сентября 2019

Я хочу упростить анализ кода и соответствующие правила для нескольких проектов и команд.

Мы привыкли делать это с помощью пакета NuGet, который импортировал анализаторы в проекты (Microsoft.CodeAnalysis.FxCopAnalyzers и StyleCop.Analyzers) и определил набор правил, чтобы определить, как каждое правило обрабатывается 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 похож наthis:

<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;
    }
}

Но результатом будет предупреждение:

errors list

Теперь, если я изменю .editorconfig и раскомментирую вторую строку:

[*.cs]
dotnet_diagnostic.CA1062.severity = error
dotnet_code_quality.null_check_validation_methods = NotNull

Ошибка идет так, что означает, что null_check_validation_methods рассматривается.

Почему это dotnet_diagnostic.CA1062.severity = error игнорируется?

...