CodeAnalysisRuleSet не работает с Directory.Build.props - PullRequest
0 голосов
/ 03 июня 2019

Когда я использую файл Directory.Build.props для определения StyleCop анализатора и настраиваемого глобального набора правил для него, эти вторые не учитываются.Я имею в виду stylecop.json, определенный в Directory.Build.props, работает глобально, но loans.ruleset не работает вообще.

Все это я попробовал в отношении этого репо .

Когда я устанавливаю StyleCop.Analyzers пакет в один проект и включаю loans.ruleset, он отлично работает для проекта WebAPI (это можетбыть точно отражено коммитами cd1b1f2 и 53b4a4c ).Тогда я попытался переместить их в глобальный режим ff8b017 .В результате работает StyleCop, но набор правил для него отсутствует.

Ниже приведен обзор:

    Directory: C:\Repos\LoansManagerRestApi


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       03.06.2019     08:50                LoansManager
d-----       03.06.2019     08:48                LoansManager.DAL
d-----       03.06.2019     08:48                LoansManager.Domain
d-----       03.06.2019     08:48                LoansManager.E2ETest
d-----       03.06.2019     08:48                LoansManager.Services
d-----       03.06.2019     08:48                LoansManager.UnitTest
d-----       03.06.2019     08:48                LoansManager.Util
-a----       02.06.2019     21:07           5912 .gitignore
-a----       03.06.2019     08:49            271 .stylecop.json
-a----       03.06.2019     08:57            338 Directory.Build.props
-a----       03.06.2019     08:51            348 loans.ruleset
-a----       02.06.2019     21:40           4208 LoansManager.sln
-a----       02.06.2019     21:07           1360 README.md

Directory.Build.props:

<Project>

  <PropertyGroup>
    <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)loans.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" />

    <AdditionalFiles Include="$(MSBuildThisFileDirectory).stylecop.json" />
  </ItemGroup>

</Project>

loan.ruleset:

<RuleSet Name="StyleCopRules" Description="These rules configure StyleCop." ToolsVersion="1.0">
  <Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
    <Rule Id="SA1101" Action="None" />
    <Rule Id="SA1633" Action="None" />
    <Rule Id="SA1600" Action="None" />
    <Rule Id="SA1615" Action="None" />
  </Rules>
</RuleSet>

Подводя итог, мне нужна помощь, чтобы правила stylecop.json и loans.ruleset применялись к решению глобально с использованием файла Directory.Build.props, чтобы не настраивать его для каждого проекта в отдельности.

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Может быть помечено как разрешенное.

Проблема была в том, что каждый из *.csproj файлов в решении был автоматически сгенерирован VS строками xml PropertyGroups:

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <CodeAnalysisRuleSet />
  </PropertyGroup>

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

чья тень Directory.Build.props.

0 голосов
/ 04 июня 2019

Импорт пакета , содержащего зависимость анализатора StyleCop и его настройки (файл stylecop.json и .ruleset) с использованием простого файла Directory.Build.props:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <ItemGroup>
    <PackageReference Include="loans.stylecop" Version="1.0.0" />
  </ItemGroup>

</Project>

работает в соответствии с ожиданиямивопрос даже в VS EE 2019 v16.1.1, но это не идеальный обходной путь, поскольку каждое изменение правила требует создания версий, сборки и публикации проекта пакета, поэтому все равно не соответствует моим ожиданиям .

...