Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何抑制StyleCop警告?_C#_.net_Visual Studio 2010_Stylecop - Fatal编程技术网

C# 如何抑制StyleCop警告?

C# 如何抑制StyleCop警告?,c#,.net,visual-studio-2010,stylecop,C#,.net,Visual Studio 2010,Stylecop,我正在使用StyleCop,希望抑制一些不符合我风格的警告。我宁愿有解决问题的办法 1) 在线代码抑制 2) 全局设置抑制 我已经在网上搜索过了,但是怎么做呢 对于方法1),他们说添加行: [程序集:SuppressMessage(“Microsoft.Design”, “SA1202:所有私有方法必须放在所有公共方法之后”, Scope=“namespace”,Target=“Consus.Client.ClientVaultModule.Services.OnlineDetection”)]

我正在使用StyleCop,希望抑制一些不符合我风格的警告。我宁愿有解决问题的办法

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

我已经在网上搜索过了,但是怎么做呢

对于方法1),他们说添加行:

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

但是他们没有说在哪里以及使用哪个名称空间

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

请帮忙

[已编辑]
在我的例子中,我有关于SA1202的警告:所有私有方法必须放在所有公共方法之后,这很麻烦,因为我将相关代码分组到区域中。我只想对某些特定的方法取消这些警告。

你不能删除规则而不是弄脏你的代码吗


FxCop也是如此…

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


对于单个覆盖,
SuppressMessage
是一种方法。

内联抑制的示例类似于此-检查代码中的名称空间,并与抑制进行比较

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;
        }
您可以通过右键单击警告自动生成此代码。

以下是您需要的:

[SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess")]

或者,您可以将区域中的代码移动到部分类中。然后,stylecop规则的问题将消失。

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

规则抑制

但是它说-

全球压制

StyleCop不支持全局抑制或 文件级抑制。禁止显示必须放置在代码上 元素

一,。 在您的情况下,correct
SuppressMessage
属性应如下所示:

[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess")]
private void SomeMethod()
{
}
请注意,您可以将其放置在任何其他元素上(例如,在类上-然后整个类中的所有类似冲突都将被禁止)

我也同意,在这些领域写些什么是不明显的

实际上,第一个应该是StyleCop Analyzer类的完全限定名,可以从源代码中找到(例如,从)。 第二个应该以规则代码开始,然后是冒号和规则枚举的名称(幸运的是,它看起来总是像设置编辑器中显示的规则名称,但没有空格)

二,。 关于“全局”抑制规则,为什么不通过设置编辑器将其关闭?设置文件是通过文件系统继承的,因此您可以很容易地在文件夹结构的“顶部”有一个“主”设置文件,以及一些其他文件(保留与主文件的“差异”),如果您愿意,某些项目会有例外(如上文所述)


祝你好运

阅读Style Cop的警告,寻找字母数字代码。在您的案例“SA1202”中。然后浏览到Style Cop网站上的相应页面。根据需要更改URL

复制标记为“如何抑制冲突”的行。将属性粘贴到类的上方,该类使用哪种样式

[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "Reviewed.")]

您可以在项目根文件夹的Settings.StyleCop文件中禁用不需要的规则。 您将需要包含规则的命名空间,可在以下位置找到:

Settings.stylecop文件代码供您参考:

<StyleCopSettings Version="105">
  <Analyzers>
    <Analyzer AnalyzerId="StyleCop.CSharp.LayoutRules">
      <Rules>
        <Rule Name="ElementsMustBeSeparatedByBlankLine">
          <RuleSettings>
            <BooleanProperty Name="Enabled">False</BooleanProperty>
          </RuleSettings>
        </Rule>
      </Rules>
      <AnalyzerSettings />
    </Analyzer>
  </Analyzers>
</StyleCopSettings>

假的

除了已有的有用答案外:

如果在禁止显示文件
GlobalSuppressions.cs
中禁止显示警告, 您可以编辑该
[assembly:SuppressMessage(StyleCop…blabla
行,并完全删除
范围=…
目标=…
标记。这使抑制在项目中成为全局的

  • 转到解决方案资源管理器
  • 转到您的项目
  • 扩展引用
  • 扩展分析器
  • 展开StyleCop.Analyzers
  • 右键单击要在全局(项目)级别禁用的特定规则
  • 设置规则集严重性->选择无
  • Visual Studio 2015+使用的NuGet软件包的包含指向的链接。每个规则的文档都包含“如何抑制冲突”部分。对于,选项包括:

    [SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "Reviewed.")]
    


    我刚刚添加了无法独占代码的原因。请查看我编辑的问题。我尝试右键单击警告(在错误/警告列表中)但是上下文菜单项不允许我对其进行限制。我使用的是VS 2010。你知道为什么吗?@Nam-不确定,我举的例子是使用vs2008。让我启动2010,看一看。@Poter:我已经在这里发布了我的相关问题@Nam-与VS 2010有一些问题-将花费我几个小时。如果到那时你还没有得到一个好的答案,我将向你汇报。B但实际上这应该是一个非常类似的过程。在那之前..嗯,我想你不能在StyleCop警告上使用上下文菜单。我显示的是来自FxCop的。但是-禁止语法是相同的。所以我想你的问题是找到你正在破坏的规则的名称空间,以便你可以手动禁止,对吗?这里也提供了相同的信息-如何你推导出那两个神奇的字符串了吗?所有的操作都是代码“SA1202”。我有一个类似的问题(代码“SP0100”),我无法推导出相应的字符串。@collone
    [SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "Reviewed.")]
    
    #pragma warning disable SA1202 // ElementsMustBeOrderedByAccess
    #pragma warning restore SA1202 // ElementsMustBeOrderedByAccess