禁用 StyleCop 规则

Posted

技术标签:

【中文标题】禁用 StyleCop 规则【英文标题】:Disabling StyleCop rules 【发布时间】:2010-10-13 04:49:56 【问题描述】:

我正在使用 StyleCop。但是有一些规则我想忽略,例如在班级成员前面使用this.

如何关闭 StyleCop 规则。我看过但找不到怎么做。

【问题讨论】:

【参考方案1】:

在您的 StyleCop 安装中,有一个 Settings.StyleCop 文件。您可以对其进行编辑以全局关闭规则。将该文件拖到该文件中的 Settings Editor 可执行文件上进行编辑。

您还可以将设置文件的副本放入您的项目中以覆盖全局设置。

如果您正在使用 Visual Studio 集成而不仅仅是 MSBuild 集成,您应该能够通过右键单击您的项目并选择 StyleCop Settings 或类似的东西来访问每个项目的设置编辑器。

【讨论】:

设置文件在哪里?如果您也安装了 resharper,这是否适用? 对于 4.7 版,它是 C:\Program Files (x86)\StyleCop 4.7\Settings.StyleCop。 ReSharper 集成也将在那里查看(以及查看项目中的任何覆盖设置文件) 啊,谢谢 :) ...当我有超过 100 个项目并且我需要为它们全部关闭 1 条规则时,这很烦人。 @Wardy 如果您将所有这些都放在同一个解决方案中,您可以将Settings.StyleCop 文件与.sln 文件放在同一目录中。 @Harrison,您是否尝试过在 Settings.StyleCop 文件上使用 StyleCopSettingsEditor.exe,而不是手动编辑它?它在C:\Program Files (x86)\StyleCop 4.7【参考方案2】:

Stylecop 可在项目级别进行配置。使用图形界面轻松管理规则,而不是编辑设置文件。(有时在某些版本中称为 Stylecop 设置)

选择下图所示的设置选项后,您应该会看到一个搜索/查找选项。

例如:如果您想删除 // cmets 不允许且 stylecop 允许 //// 的规则,则搜索 stylecop 规则 ID。在这种情况下,它是 SA1005。当您在项目中运行 stylecop 时,您可以在警告部分看到这一点。使用关键字 SA1005 查找,您应该在结果部分看到它。只需取消选中即可。

您可以按如下方式管理规则

【讨论】:

我认为您可以通过这种方式设置一个 csproj,然后将 Settings.StyleCop 文件“移动”到更高的文件夹(例如..\..),它将适用于/下的所有内容那个文件夹。 (从另一个答案重复评论,但有助于防止额外的工作)::: 额外提示。如果您有像 \root\Pres\Pres.csproj、\root\Bal\Bal.csproj、\root\Dal\Dal.csproj 和 \root\Solutions\MySolution.sln 这样的目录结构,您可以右键单击任何项目.......创建规则......(例如\root\Bal\Settings.StyleCop)但是您可以手动将该文件移动到\root\Settings.StyleCop....... ...对于 \root\,也就是您的整个解决方案,它将是“全局的”。【参考方案3】:

该特定规则在可读性规则 - 成员访问 - SA1101:PrefixLocalCallsWithThis 下。

如果你把它关掉,它应该不会再对你大喊大叫了……我必须这样做。 Stylecop 一直让我头疼。

【讨论】:

以上是关于禁用 StyleCop 规则的主要内容,如果未能解决你的问题,请参考以下文章

可视化 StyleCop 和代码分析规则违规

C# - StyleCop - SA1121:UseBuiltInTypeAlias - 可读性规则

如何为 C# 生成自定义 StyleCop 规则 - 条件编译预处理器指令

代码规范工具

在 Visual Studio 中签入之前构建解决方案的规则

为啥 StyleCop 建议在方法或属性调用前加上“this”?