Подтвердить что ты не робот

Как использовать StyleCop с TeamCity

Кто-нибудь имел успех с запуском StyleCop от TeamCity?

Я знаю, что StyleCop поддерживает режим командной строки, однако я не уверен, как это будет интегрироваться в вывод отчета TeamCity.

Я проверил этот плагин, найденный здесь: https://bitbucket.org/metaman/teamcitydotnetcontrib/src/753712db5df7/stylecop/

Однако он не смог запустить его.

Я использую TeamCity 6.5.1 (последний).

4b9b3361

Ответ 1

Я не знаю, насколько вы знакомы с MSBuild, но вы должны добавить новый шаг сборки в TC 6 и выше и установить MSBuild в качестве бегуна сборки и указать его в .proj файл, который делает что-то похожее на следующее:

<Target Name="StyleCop">

  <!-- Create a collection of files to scan -->
  <CreateItem Include="$(SourceFolder)\**\*.cs">
    <Output TaskParameter="Include" ItemName="StyleCopFiles" />
  </CreateItem>

  <StyleCopTask
    ProjectFullPath="$(MSBuildProjectFile)"
    SourceFiles="@(StyleCopFiles)"
    ForceFullAnalysis="true"
    TreatErrorsAsWarnings="true"
    OutputFile="StyleCopReport.xml"
    CacheResults="true" />

  <Xslt Inputs="StyleCopReport.xml"
     RootTag="StyleCopViolations" 
     Xsl="tools\StyleCop\StyleCopReport.xsl"
     Output="StyleCopReport.html" />

  <XmlRead XPath="count(//Violation)" XmlFileName="StyleCopReport.xml">
    <Output TaskParameter="Value" PropertyName="StyleCopViolations" />
  </XmlRead>

  <Error Condition="$(StyleCopViolations) > 0" Text="StyleCop found $(StyleCopViolations) broken rules!" />

</Target>

Если вы не хотите сбой сборки на ошибке StyleCop, установите вместо этого задачу Error Warning.

Вам также необходимо добавить в файл .proj следующее:

<UsingTask TaskName="StyleCopTask" AssemblyFile="$(StyleCopTasksPath)\Microsoft.StyleCop.dll" />

Microsoft.StyleCop.dll включен в установку StyleCop, и вам необходимо правильно установить пути.

Чтобы увидеть выведенные результаты StyleCop в TeamCity, вам нужно будет преобразовать отчет .xml StyleCop в HTML с помощью соответствующего .xsl файла (называемого StyleCopReport.xsl в script выше).

Чтобы отобразить HTML файл в TeamCity, вам нужно создать artifact из этого вывода .html, а затем включить этот артефакт в результаты сборки.

Непрерывная интеграция в .NET - отличный ресурс.

Ответ 2

Знаете ли вы, что teamcity предоставляет определенные свойства только из msbuild? Нет необходимости в служебных сообщениях: http://confluence.jetbrains.net/display/TCD65/MSBuild+Service+Tasks

Поэтому вам не нужно добавлять страницу отчета. Используйте статистику сборки, например.

<TeamCitySetStatus Status="$(AllPassed)" Text="Violations: $(StyleCopViolations)" />

вы также можете зарегистрировать статистику:

<TeamCityReportStatsValue Key="StyleCopViolations" Value="$(StyleCopViolations)" />

И затем создайте настраиваемый график для отображения, и у вас уже есть нарушения в вашем выпуске msbuild. Измените main-config.xml и добавьте:

<graph title="Style Violations" seriesTitle="Warning">
   <valueType key="StyleCopViolations" title="Violations" buildTypeId="bt20"/>
 </graph>

Где buildTypeId = "bt20" bt20 - это ваша сборка стиля.

Ответ 3

Я опаздываю на шоу здесь, но очень простой способ добиться этого - установить StyleCop.MSBuild пакет NuGet в любом проекте которые вы хотите проанализировать с помощью StyleCop.

После установки пакета анализ StyleCop будет выполняться на каждой вашей сборке независимо от того, где и как вызывается, например, VS, командной строки, msbuild, psake, rake, fake, bake, nant, build server и т.д. Никаких специальных действий не требуется.

Если вы хотите, чтобы сборка завершилась неудачей при нарушении правил StyleCop, вам просто нужно добавить следующий файл в файл проекта в каждой соответствующей конфигурации сборки, например.

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

Опять же, это будет работать на каждой сборке независимо от того, где и как она вызывается.

Ответ 4

Там (новый?) сторонний плагин TeamCity для StyleCop здесь (хотя я еще не пробовал).

UPDATE:, насколько я могу судить, последняя версия работает только с TeamCity 7 (или я сделал что-то не так). Кроме того, у меня очень медленный (виртуальный) сервер сборки, поэтому даже после перезапуска служб потребовалось некоторое время, чтобы бегун StyleCop появился в веб-интерфейсе.

Другая глупая вещь, которую я сделал, не читала readme должным образом: вам нужно разархивировать загруженный zip и использовать zip внутри.

Я также начал с простого списка файлов .cs в опции "Включить" (для шага сборки), но это не сработало; ссылки на файлы sln или csproj действительно работают.