【问题标题】:Setting individual StyleCop rules as build errors将单个 StyleCop 规则设置为构建错误
【发布时间】:2013-04-16 02:26:26
【问题描述】:
根据this blog,您可以将所有/某些项目设置为将 StyleCop 违规视为构建错误而不是警告:
默认情况下,StyleCop 违规将显示为构建警告。 要将 StyleCop 违规转化为构建错误,必须将标志 StyleCopTreatErrorsAsWarnings 设置为 false。 该标志可以设置为机器上的环境变量,也可以在构建环境命令窗口中设置。以这种方式设置标志将导致 StyleCop 违规自动显示为所有启用 StyleCop 构建集成的项目的构建错误。
或者,可以在项目文件中为特定项目设置此标志。 再次打开项目的 .csproj 文件,找到文件中的第一个 PropertyGroup 部分。添加新标签以将 StyleCopTreatErrorsAsWarnings 标志设置为 false。
This doc 显示了您可以打开/关闭单个规则的位置,但它似乎不支持设置严重性,只能完全打开/关闭它们。
是否可以更精细地控制哪些规则会导致错误和警告?
【问题讨论】:
标签:
c#
.net
msbuild
stylecop
【解决方案1】:
它不应该,但如果你真的想要它.. 为什么不呢?
这里是一个想法,而不是一个完整的解决方案。
StyleCop.Targets 文件中有两行有用的行。第一个导入 StyleCop 任务:
<UsingTask AssemblyFile=".\StyleCop.dll" TaskName="StyleCopTask"/>
这个叫它:
<StyleCopTask
ProjectFullPath="$(MSBuildProjectDirectory)"
SourceFiles="@(StyleCopFiles)"
AdditionalAddinPaths="@(StyleCopAdditionalAddinPaths)"
ForceFullAnalysis="$(StyleCopForceFullAnalysis)"
DefineConstants="$(DefineConstants)"
TreatErrorsAsWarnings="$(StyleCopTreatErrorsAsWarnings)"
CacheResults="$(StyleCopCacheResults)"
OverrideSettingsFile="$(StyleCopOverrideSettingsFile)"
OutputFile="$(StyleCopOutputFile)"
MaxViolationCount="$(StyleCopMaxViolationCount)"
/>
所以你基本上需要调用它两次,第一次指定TreatErrorsAsWarnings 为false(这样如果有任何警告它就会失败),第二次指定true(导致只是警告)。
此外,您将需要使用两个单独的设置文件 - 第一个带有 stylecop 'errors',第二个带有 'warnings'。