Jak używać StyleCop z TeamCity

Czy komuś udało się uruchomić StyleCop z TeamCity?

Wiem, że StyleCop obsługuje tryb wiersza poleceń, jednak nie jestem pewien, jak to zintegruje się z wyjściem raportu przez TeamCity.

Sprawdziłem ten plugin znaleziony tutaj: https://bitbucket.org/metaman/teamcitydotnetcontrib/src/753712db5df7/stylecop/

Jednak nie można go uruchomić.

Używam TeamCity 6.5.1 (najnowsza).

Author: lysergic-acid, 2011-06-16

4 answers

Nie wiem, jak dobrze znasz MSBuild, ale powinieneś być w stanie dodać nowy krok budowania W TC 6 i wyżej, ustawić MSBuild jako runner kompilacji i skierować go na .plik proj, który robi coś podobnego do następującego:

<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>

Jeśli nie chcesz zawieść kompilacji na błędzie StyleCop, Ustaw zadanie Error na Warning.

Musisz również dodać następujące elementy do swojego .plik proj:

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

Microsoft.StyleCop.dll znajduje się w instalacji StyleCop, a musisz odpowiednio ustawić swoje ścieżki.

Aby zobaczyć wyjściowe wyniki StyleCop w TeamCity, musisz przekształcić .XML StyleCop raport do HTML za pomocą odpowiedniego .plik xsl (zwany StyleCopReport.xsl w skrypcie powyżej).

Aby wyświetlić plik HTML w TeamCity, musisz utworzyć artefakt z tego pliku .wyjście html, a następnie dołącz ten artefakt do wyników budowania .

Ciągła integracja z. NET książka jest świetny zasób.

 16
Author: devdigital,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-16 13:58:38

Czy wiesz, że teamcity dostarcza konkretne właściwości tylko z msbuild? Nie ma potrzeby wysyłania komunikatów serwisowych, zobacz: http://confluence.jetbrains.net/display/TCD65/MSBuild + serwis + zadania

Więc nie musisz dodawać niestandardowej strony raportu. Użyj statystyk budowania, np.

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

Możesz też zalogować statystykę:

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

A następnie utwórz własny wykres do wyświetlenia, a już masz naruszenia w wyjściu msbuild. edycja main-config.xml i dodaj:

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

Gdzie buildTypeId="bt20" bt20 to twój styl budowania.

 6
Author: James Woolfenden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-17 11:56:18

Jestem spóźniony na pokaz tutaj, ale bardzo łatwym sposobem na osiągnięcie tego jest zainstalowanie StyleCop.MSBuild pakiet NuGet w dowolnym projekcie, który chcesz przeanalizować za pomocą StyleCop.

Po zainstalowaniu pakietu, Analiza StyleCop będzie uruchamiana na każdej kompilacji, niezależnie od tego, gdzie i jak zostanie wywołana, np. VS, linia poleceń, msbuild, psake, rake, fake, bake, nant, build server, itp. Nie są wymagane żadne specjalne działania.

Jeśli chcesz, aby build nie powiódł się, gdy StyleCop reguły są łamane wystarczy dodać następujący element do pliku projektu pod każdą odpowiednią konfiguracją budowania, np.

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

Ponownie, będzie to działać na każdej kompilacji , niezależnie od tego, gdzie i jak zostanie wywołana.

 5
Author: Adam Ralph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-27 16:45:53

There ' s a (new?) third-party TeamCity plugin for StyleCop here, (choć nie próbowałem jeszcze).

UPDATE: z tego co wiem, najnowsza wersja działa tylko z TeamCity 7 (albo zrobiłem coś nie tak). Ponadto, mam bardzo powolny (wirtualny) serwer budowania, więc nawet po ponownym uruchomieniu usług, zajęło trochę czasu, zanim program StyleCop runner pojawi się w interfejsie internetowym.

Kolejną głupią rzeczą jaką zrobiłem było a nie poprawne przeczytanie readme: musisz Rozpakuj pobrany zip i użyj zip wewnątrz.

Ja też zaczynałem od tylko listy .pliki cs w opcji "Dołącz" (dla kroku budowania), ale to nie zadziałało; linki do plików sln lub csproj działają.

 3
Author: Benjol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-01 11:18:51