Задача расширений копов в стиле MSbuild для запуска на решении

Мне нужна помощь в запуске задачи stylecop для всех файлов CS, включенных в решение. Пожалуйста, дайте мне знать, если это возможно и как? Прямо сейчас я могу запустить его на файл, но не на решение.

 <CreateItem Include="$(RootPath)\**\*.cs">
  <Output TaskParameter="Include" ItemName="StyleCopFiles"/>
</CreateItem>

 <MSBuild.ExtensionPack.CodeQuality.StyleCop
          TaskAction="Scan"
          ShowOutput="true"
          ForceFullAnalysis="true"
          CacheResults="false"
          SourceFiles="@(StyleCopFiles)"
          logFile="$(OutDir)\StyleCopLog.txt"
          SettingsFile="$(MSBuildStartupDirectory)\..\Settings.StyleCop"
          ContinueOnError="false">
          <Output TaskParameter="Succeeded" PropertyName="AllPassed"/>
          <Output TaskParameter="ViolationCount" PropertyName="Violations"/>
          <Output TaskParameter="FailedFiles" ItemName="Failures"/>
    </MSBuild.ExtensionPack.CodeQuality.StyleCop>

1 ответ

Рассматривали ли вы автоматический запуск правил StyleCop как часть процесса сборки вашего проекта? Это не будет запускать все правила на уровне решения, но на уровне проекта. Я предпочитаю такой подход, потому что правила будут запускаться всякий раз, когда вы создаете свой проект / решение, и будут отображаться как Предупреждения на панели Список ошибок (двойной щелчок, чтобы перейти к ошибочной строке кода). Настройка этого для каждого отдельного проекта может показаться трудной, но у нас есть другой набор правил StyleCop для наших проектов модульного тестирования, и это позволяет нам настраивать их индивидуально.

Кроме того, вам не нужно явно добавлять задачу MSBuild в ваш скрипт сборки, потому что сборка проектов автоматически выполнит правила StyleCop.

Также стоит отметить, что я использую пакет NuGet: StyleCop.MSBuild (версия 4.7.17.1) и использую относительный путь для ссылки на пакет из моего файла.csproj, например так:

<Project>
    <Import Project="..\Packages\StyleCop.MSBuild.4.7.17.1\tools\StyleCop.targets" />
</Project>

http://stylecop.codeplex.com/wikipage?title=Running%20StyleCop%20in%20VS2005%20or%20VS%20Express&referringTitle=Documentation

Вы также можете установить условия, когда вы хотите, чтобы правила запускались. Если условие оценивается как ложное, StyleCop не будет работать. Мы используем условие для подавления StyleCop при запуске юнит-тестов

<Project>
    <Import Project="..\Packages\StyleCop.MSBuild.4.7.17.1\tools\StyleCop.targets" Condition="'$(NCrunch)'!='1'" />
</Project>

Чтобы настроить правила StyleCop, вам необходимо установить StyleCop_v4.7.17.0.msi. Мы определяем только один файл Settings.StyleCop (Parent Settings File) для всей нашей кодовой базы.

http://stylecop.codeplex.com/wikipage?title=Sharing%20StyleCop%20Settings%20Across%20Projects&referringTitle=Documentation

Другие вопросы по тегам