Как использовать StyleCop с TeamCity - PullRequest
19 голосов
/ 16 июня 2011

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

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

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

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

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

Ответы [ 4 ]

16 голосов
/ 16 июня 2011

Я не знаю, насколько вы знакомы с 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).

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

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

6 голосов
/ 17 июня 2011

Знаете ли вы, что 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 - ваш стиль сборки.

5 голосов
/ 27 октября 2012

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

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

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

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

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

3 голосов
/ 29 февраля 2012

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

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

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

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

...