【问题标题】:Validate StyleCop in TeamCity在 TeamCity 中验证 StyleCop
【发布时间】:2014-01-07 18:39:31
【问题描述】:

我正在尝试让 TeamCity 构建我的 C# 解决方案并执行 StyleCop,如果存在任何违规行为,则构建失败。我希望它像在 Visual Studio 的解决方案资源管理器中右键单击解决方案然后单击 Run StyleCop 时一样执行,但我希望将警告视为错误。

我已经尝试了this answer 中的建议,但在实施时遇到了一些问题。

问题是:

<CreateItem Include="$(SourceFolder)\**\*.cs">

在文件夹结构中包含所有 .cs 文件,并且不尊重每个项目的单独 StyleCop 设置(例如要排除的文件)。

另一种选择是拥有一个build.xml 文件,以便MSBuild 可以引用它。但是,这意味着要维护 XML 文件以及 .sln 文件。我确实找到了this answer,这意味着您可以像这样在 XML 中包含解决方案参考

  <include name="MyTopSecretApplication.sln"/>

但由于某种原因,当我将 CreateItem 设置为时,它没有传递编译文件

<CreateItem Include="@(Compile)">

如果设置了condition,理论上应该传递编译文件并尊重包含/排除设置(我猜是因为包括.sln的XML文件意味着编译文件不是' t 通过)。

Condition="('%(Compile.ExcludeFromStyleCop)' != 'true') and ('%(Compile.ExcludeFromSourceAnalysis)' != 'true')"

有没有一种好方法可以让 MSBuild 在 TeamCity 中构建我的解决方案文件,验证是否遵循 StyleCop 规则,并尊重每个项目的 StyleCop 规则?

【问题讨论】:

    标签: c# msbuild teamcity stylecop


    【解决方案1】:

    这就是我如何让它在我的环境中工作

    • 使用 Visual Studio 让 StyleCop 在您的开发机器上以您希望的方式工作。我使用 NuGet 包执行此操作,但只要在出现 StyleCop 问题时收到构建警告,那么你就很好。
    • 要将 StyleCop 警告转换为错误,请编辑每个 csproj 文件,并在相关构建配置部分创建一个值为 falseStyleCopTreatErrorsAsWarnings 元素,例如,我只对发布版本执行此操作。请参阅 this 博客了解更多详情。
    • 只需让 TeamCity 构建您的解决方案,因为 StyleCop 警告现在是错误,如果有任何 StyleCop 问题,它将导致构建失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多