如何抑制StyleCop警告?

Nam*_* VU 54 .net c# stylecop visual-studio-2010

我正在使用StyleCop并希望抑制一些不符合我风格的警告.我更喜欢有解决方案

1)在线代码抑制
2)全局设置抑制

我搜索过互联网,但仍不确定如何进行压制.

方法1),他们说添加线:

[assembly:SuppressMessage("Microsoft.Design","SA1202:所有私有方法必须放在所有公共方法之后",Scope ="namespace",Target ="Consus.Client.ClientVaultModule.Services.OnlineDetection")]

但他们没有说明要使用的名称空间和名称.

对于方法2),他们说使用GlobalSuppress文件,但目前似乎不容易搜索如何操作.

请帮忙.

[已编辑]就我而言,我收到了关于SA1202的警告:由于我将相关代码分组到区域,因此必须在所有公共方法之后放置所有私有方法.我想仅针对某些方法来抑制这些警告.

小智 47

这就是你需要的:

[SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess")]
Run Code Online (Sandbox Code Playgroud)

  • 你是如何推断这两个神奇的弦?发布的所有OP都是代码'SA1202'.我有类似的问题(代码'SP0100'),我无法推断出相应的字符串. (11认同)
  • 如果您访问http://www.stylecop.com/docs/SA1202.html(或其他警告的类似页面URL),您可以找到抑制消息语法的非常清晰的详细信息. (6认同)
  • 他们的文档在这里更新:https://github.com/DotNetAnalyzers/StyleCopAnalyzers/tree/master/documentation (2认同)

Sky*_*ers 21

内联抑制的一个例子与此类似 - 检查代码中的命名空间与抑制相比

namespace Soapi
{
        ///<summary>
        ///</summary>
        ///<param name = "message"></param>
        ///<param name = "statusCode"></param>
        ///<param name = "innerException"></param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object)")]
        public ApiException(string message, ErrorCode statusCode, Exception innerException)
            : base(String.Format("{0}\r\nStatusCode:{1}", message, statusCode), innerException)
        {
            this.statusCode = statusCode;
        }
Run Code Online (Sandbox Code Playgroud)

全局抑制文件是项目根目录中的文件GlobalSuppressions.cs,可能如下所示:

// This file is used by Code Analysis to maintain SuppressMessage 
// attributes that are applied to this project. 
// Project-level suppressions either have no target or are given 
// a specific target and scoped to a namespace, type, member, etc. 
//
// To add a suppression to this file, right-click the message in the 
// Error List, point to "Suppress Message(s)", and click 
// "In Project Suppression File". 
// You do not need to add suppressions to this file manually. 

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object,System.Object)", Scope = "member", Target = "Soapi.ApiException.#.ctor(System.String,Soapi.ErrorCode,System.String,System.Exception)")]
Run Code Online (Sandbox Code Playgroud)

您可以通过右键单击警告自动生成此代码.

  • 我试过右键单击警告(在错误/警告列表中),但没有上下文菜单项允许我压制它.我正在使用VS 2010.你知道为什么吗? (3认同)

akj*_*shi 9

从StyleCop 4.3.2开始,可以通过在源代码中添加抑制属性来抑制规则违规的报告.

规则抑制 http://stylecop.soyuz5.com/Suppressions.html

但它说 -

全球抑制

StyleCop不支持全局抑制或文件级抑制的概念.抑制必须放在代码元素上.


Ken*_*art 7

如果您已经安装了StyleCop,则可以右键单击您的项目,然后会有一个StyleCop选项.单击此按钮,您将看到可以阻止某些规则甚至针对您的项目运行.此外,您可以创建单独的规则文件以在不同项目之间共享.这意味着您可以按照您希望的方式配置规则,然后在所有项目之间共享该配置.

对于个人覆盖,SuppressMessage是要走的路.


Col*_*nic 5

阅读Style Cop的警告,寻找字母数字代码。您的情况是“ SA1202”。然后浏览到Style Cop网站上的相应页面。适当更改URL https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1202.md

复制标有“如何禁止违规”的行。将属性粘贴到有关Style Cop抱怨的类上方

[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "Reviewed.")]
Run Code Online (Sandbox Code Playgroud)


Aks*_*nya 5

  1. 转到解决方案资源管理器
  2. 转到您的项目
  3. 展开参考
  4. 展开分析器
  5. 展开 StyleCop.Analyzers
  6. 右键单击要在全局(项目)级别禁用的特定规则
  7. 设置规则集严重性 -> 选择无


lep*_*pie 3

难道你不能直接删除规则而不弄脏你的代码吗?

FxCop 也是如此...