2014-01-07 3 views
2

Я пытаюсь получить TeamCity для создания моего решения на C# и выполнения StyleCop и сбоя сборки, если есть какие-либо нарушения. Я хочу, чтобы он выполнялся так же, как при щелчке правой кнопкой мыши по решению в обозревателе решений в Visual Studio, а затем нажмите Run StyleCop, за исключением того, что я хотел бы, чтобы предупреждения обрабатывались как ошибки.Validate StyleCop в TeamCity

Я пробовал предложения в this answer, однако у меня было несколько проблем с его внедрением.

Проблемы были:

<CreateItem Include="$(SourceFolder)\**\*.cs"> 

был включая все .cs файлы в структуре папок и не уважая индивидуальные настройки StyleCop для каждого проекта (например, файлы, чтобы исключить).

Другой вариант - иметь файл build.xml, чтобы на него можно было ссылаться MSBuild. Однако это означало бы сохранение файла XML, а также файла .sln. Я нашел this answer что означало, вы можете включить ссылку решения в XML как так

<include name="MyTopSecretApplication.sln"/> 

, но по какой-то причине он не проходил скомпилированные файлы, когда у меня был CreateItem комплекта как

<CreateItem Include="@(Compile)"> 

который должен теоретически передавать скомпилированные файлы и учитывать параметры include/exclude, если было установлено condition (как показано ниже) (я предполагаю, потому что XML-файл, содержащий , означал, что скомпилированные файлы не были переданы).

Condition="('%(Compile.ExcludeFromStyleCop)' != 'true') and ('%(Compile.ExcludeFromSourceAnalysis)' != 'true')" 

Есть хороший способ, я могу получить MSBuild построить свой файл решения в TeamCity, проверить, что правила StyleCop следуют, и соблюдать правила StyleCop за проект?

ответ

2

Так вот, как я получить эту работу в своей среде

  • Получить StyleCop работает так, как вы хотите, чтобы на вашем Dev машине с помощью Visual Studio. Я делаю это с помощью пакета NuGet, но пока вы получаете предупреждения о сборке, когда есть проблемы с StyleCop, тогда вы в порядке.
  • Чтобы превратить предупреждения StyleCop в ошибки, отредактируйте каждый файл csproj и включите элемент StyleCopTreatErrorsAsWarnings со значением false в соответствующем разделе конфигурации сборки, например, я делаю это только для сборки Release. См. Блог this для более подробной информации об этом.
  • Просто создайте TeamCity, чтобы создать свое решение, и поскольку предупреждения StyleCop теперь являются ошибками, это приведет к сбою сборки, если есть проблемы с StyleCop.