有没有人在TeamCity中运行StyleCop取得任何成功?
我知道StyleCop支持命令行模式,但是我不确定它将如何集成到TeamCity的报告输出中。
我已经查看了此处的插件:https://bitbucket.org/metaman/teamcitydotnetcontrib/src/753712db5df7/stylecop/
然而无法让它运行。
我正在使用TeamCity 6.5.1(最新版)。
答案 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文件的链接确实可以工作。