将单个StyleCop规则设置为生成错误

本文关键字:错误 设置 单个 StyleCop 规则 | 更新日期: 2023-09-27 18:09:28

根据这个博客,您可以设置所有/某些项目将StyleCop违规视为构建错误而不是警告:

默认情况下,StyleCop违规将显示为构建警告。要将StyleCop违规转换为构建错误,必须将标志StyleCopTreatErrorsAsWarnings设置为false。该标志可以设置为机器上的环境变量,或者在构建环境命令窗口中设置。以这种方式设置标志将导致StyleCop违规自动显示为所有启用了StyleCop构建集成的项目的构建错误。

或者,这个标志可以在特定项目的项目文件中设置。再次打开项目的.csproj文件,并在文件中找到第一个PropertyGroup部分。添加一个新标签,将StyleCopTreatErrorsAsWarnings标记设置为false。

这个文档显示了你可以在哪里打开/关闭单个规则,但它似乎不支持设置严重性,只能完全打开/关闭它们。

是否不可能对导致错误和警告的规则进行更细粒度的控制?

将单个StyleCop规则设置为生成错误

这是不应该的,但如果你真的想…为什么不呢?

这是一个想法,不是一个完整的解决方案。

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)"
        />

所以你基本上需要调用它两次,第一次指定TreatErrorsAsWarningsfalse(这样如果有任何警告它就会失败),第二次指定true(只导致警告)。

同样,你将需要使用两个单独的设置文件-第一个使用style 'errors',第二个使用'warnings'。