如何将StyleCop与TeamCity一起使用

lys*_*cid 19 teamcity stylecop

有没有人在TeamCity中运行StyleCop有什么成功?

我知道StyleCop支持命令行模式,但我不确定它将如何集成到TeamCity的报告输出中.

我已经查看了这个插件:https://bitbucket.org/metaman/teamcitydotnetcontrib/src/753712db5df7/stylecop/

但无法让它运行.

我正在使用TeamCity 6.5.1(最新版).

dev*_*tal 16

我不知道你对MSBuild有多熟悉,但你应该能够在TC 6及更高版本中添加一个新的Build Step,并将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>
Run Code Online (Sandbox Code Playgroud)

如果您不想使StyleCop错误的构建失败,那么请将Error任务设置为Warning.

您还需要将以下内容添加到.proj文件中:

<UsingTask TaskName="StyleCopTask" AssemblyFile="$(StyleCopTasksPath)\Microsoft.StyleCop.dll" />
Run Code Online (Sandbox Code Playgroud)

Microsoft.StyleCop.dll 包含在StyleCop安装中,您需要适当地设置路径.

要在TeamCity中查看输出的StyleCop结果,您需要使用适当的.xsl文件(在上面的脚本中称为StyleCopReport.xsl)将.xml StyleCop报告转换为HTML.

要在TeamCity中显示HTML文件,您需要从此.html输出创建工件,然后在构建结果中包含该工件.

.NET中持续集成一书是一个很好的资源.


Jam*_*den 6

您是否知道teamcity仅提供来自msbuild的特定属性?无需服务消息,请参阅:http: //confluence.jetbrains.net/display/TCD65/MSBuild+Service+Tasks

所以你不必添加自定义报告页面.使用构建统计信息,例如

<TeamCitySetStatus Status="$(AllPassed)" Text="Violations: $(StyleCopViolations)" />
Run Code Online (Sandbox Code Playgroud)

然后你可以记录统计数据:

<TeamCityReportStatsValue Key="StyleCopViolations" Value="$(StyleCopViolations)" />
Run Code Online (Sandbox Code Playgroud)

然后创建一个要显示的自定义图表,并且您已经在msbuild输出中存在违规.编辑main-config.xml并添加:

<graph title="Style Violations" seriesTitle="Warning">
   <valueType key="StyleCopViolations" title="Violations" buildTypeId="bt20"/>
 </graph>
Run Code Online (Sandbox Code Playgroud)

buildTypeId ="bt20"bt20是你的风格版本.


Ada*_*lph 5

我迟到了这个节目,但实现这一目标的一个非常简单的方法是在任何你想用StyleCop分析的项目中安装StyleCop.MSBuild NuGet包.

安装软件包后,StyleCop分析将在您执行的每个构建上运行,无论它在何处或如何调用,例如VS,命令行,msbuild,psake,rake,fake,bake,nant,build server等.无需特殊操作是必要的.

如果你希望在StyleCop规则被破坏时构建失败,你只需要在每个适当的构建配置下将以下元素添加到项目文件中,例如:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
    ...
Run Code Online (Sandbox Code Playgroud)

同样,这将适用于每个构建,无论它在何处以及如何被调用.