如何将StyleCop与TeamCity一起使用

时间:2011-06-16 10:15:35

标签: teamcity stylecop

有没有人在TeamCity中运行StyleCop取得任何成功?

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

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

然而无法让它运行。

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

4 个答案:

答案 0 :(得分: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>

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

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

<UsingTask TaskName="StyleCopTask" AssemblyFile="$(StyleCopTasksPath)\Microsoft.StyleCop.dll" />
StyleCop安装中包含

Microsoft.StyleCop.dll,您需要适当地设置路径。

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

要在TeamCity中显示HTML文件,您需要从此.html输出创建artifact,然后include that artifact in the build results

Continuous Integration in .NET本书是一本很好的资源。

答案 1 :(得分:6)

您是否知道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是你的风格版本。

答案 2 :(得分: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>
    ...

同样,这将适用于每个版本,无论调用的位置和方式如何。

答案 3 :(得分:3)

StyleCop here有一个(新的?)第三方TeamCity插件,(虽然我还没有尝试过)。

更新:据我所知,最新版本仅适用于TeamCity 7(或者我做错了)。此外,我有一个非常慢的(虚拟)构建服务器,所以即使在重新启动服务之后,StyleCop运行器也需要一段时间才能出现在Web界面中。

我做的另一件愚蠢的事情是正确阅读自述文件:你必须解压缩下载的zip文件,然后使用里面的

我最初也只是在“包含”选项(用于构建步骤)中的.cs文件列表中开始,但这不起作用;到sln或csproj文件的链接确实可以工作。