我正在尝试让 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
已设置(如下所示),理论上应该传递编译文件并遵守包含/排除设置(我猜是因为 XML 文件包含 . sln
表示编译后的文件没有通过)。
Condition="('%(Compile.ExcludeFromStyleCop)' != 'true') and ('%(Compile.ExcludeFromSourceAnalysis)' != 'true')"
有什么好方法可以让 MSBuild 在 TeamCity 中构建我的解决方案文件,验证是否遵循了 StyleCop 规则,并遵守每个项目的 StyleCop 规则?
最佳答案
下面是我如何让它在我的环境中工作
- 使用 Visual Studio 让 StyleCop 在您的开发机器上按照您希望的方式工作。我使用 NuGet 执行此操作包,但只要您在出现 StyleCop 问题时收到构建警告,那么您就很好。
- 要将 StyleCop 警告转化为错误,请编辑每个 csproj 文件并在相关构建配置部分中创建一个值为
false
的StyleCopTreatErrorsAsWarnings
元素,例如我只为发布版本执行此操作。参见 this有关这方面的更多详细信息,请访问博客。 - 只需让 TeamCity 构建您的解决方案,由于 StyleCop 警告现在是错误,如果存在任何 StyleCop 问题,构建将失败。
关于c# - 在 TeamCity 中验证 StyleCop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979256/