有没有人成功地从TeamCity运行StyleCop?
我知道StyleCop支持命令行模式,但我不知道如何将其集成到TeamCity输出的报告中。
我查看了这个插件,位于这里:https://bitbucket.org/metaman/teamcitydotnetcontrib/src/753712db5df7/stylecop/
然而,我无法使它运行起来。
我正在使用最新的TeamCity 6.5.1。
有没有人成功地从TeamCity运行StyleCop?
我知道StyleCop支持命令行模式,但我不知道如何将其集成到TeamCity输出的报告中。
我查看了这个插件,位于这里:https://bitbucket.org/metaman/teamcitydotnetcontrib/src/753712db5df7/stylecop/
然而,我无法使它运行起来。
我正在使用最新的TeamCity 6.5.1。
我不知道你对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安装中,您需要适当设置路径。
要在TeamCity中查看输出的StyleCop结果,您需要使用适当的.xsl文件(上面脚本中称为StyleCopReport.xsl)将.xml StyleCop报告转换为HTML。
要在TeamCity中显示HTML文件,您需要从此.html输出创建一个artifact,然后将该artifact包含在构建结果中。
.NET中的持续集成书籍是一个很好的资源。
你知道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 是您的自定义构建。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
...
无论在何处以及如何调用,这都适用于每个版本。
有一个(新的?)第三方TeamCity插件,用于StyleCop 这里,(尽管我还没有尝试过)。
更新:据我所知,最新版本只适用于TeamCity 7(或者我做错了什么)。此外,我的构建服务器非常慢(虚拟机),即使服务已重启,也需要一段时间才能在Web界面中显示StyleCop运行程序。
我做的另一件傻事是没有仔细阅读自述文件:您必须解压下载的zip文件,并使用其中的zip 。
我最初只是在“包含”选项(用于构建步骤)中列出了.cs文件的列表,但那不起作用;然而链接到sln或csproj文件确实有效。