Задача расширений копов в стиле 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>
Вы также можете установить условия, когда вы хотите, чтобы правила запускались. Если условие оценивается как ложное, 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) для всей нашей кодовой базы.