验证TeamCity中的StyleCop

时间:2014-01-07 18:39:31

标签: c# msbuild teamcity stylecop

我试图让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文件意味着编译的文件没有通过。

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

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

1 个答案:

答案 0 :(得分:2)

所以这就是我如何在我的环境中使用它

  • 使用Visual Studio在您的开发计算机上以您希望的方式运行StyleCop。我使用NuGet包执行此操作,但只要在有StyleCop问题时您收到构建警告,那么您就是好的。
  • 要将StyleCop警告转换为错误,请编辑每个csproj文件,并在相关构建配置部分中包含值StyleCopTreatErrorsAsWarnings的{​​{1}}元素,例如我只对Release版本执行此操作。有关详细信息,请参阅this博客。
  • 让TeamCity构建您的解决方案,因为StyleCop警告现在是错误,如果有任何StyleCop问题,它将无法构建。