How to suppress a StyleCop warning?

58,352

Solution 1

Here's what you need:

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

Solution 2

An example of inline suppression would be similar to this - examine the namespaces in the code compared to the suppression

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;
        }

A global supression file is a file in the root of your project named GlobalSuppressions.cs and might look like this:

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

And you can generate this code automatically by right-clicking on the warning.

Solution 3

Starting with StyleCop 4.3.2, it is possible to suppress the reporting of rule violations by adding suppression attributes within the source code.

Rule Suppressions http://stylecop.soyuz5.com/Suppressions.html

but it says -

Global Suppressions

StyleCop does not support the notion of global suppressions or file-level suppressions. Suppressions must be placed on a code element.

Solution 4

If you've installed StyleCop, you can right-click your project and there will be a StyleCop option. Click this and you'll see you can prevent certain rules from even running against your project. Moreover, you can create a separate rules file to share between different projects. This means you can configure the rules once the way you want them and then share that configuration between all your projects.

For individual overrides, SuppressMessage is the way to go.

Solution 5

  1. Go to Solution Explorer
  2. Go to your project
  3. Expand references
  4. Expand Analyzers
  5. Expand StyleCop.Analyzers
  6. Right click on a particular rule which you want to disable at a global (project) level
  7. Set Rule Set severity -> Select None
Share:
58,352
Nam G VU
Author by

Nam G VU

I love to learn and try new stuff; dreaming to create ones someday!

Updated on July 08, 2022

Comments

  • Nam G VU
    Nam G VU almost 2 years

    I'm using StyleCop and want to suppress some warning which does not suit my style. I prefer to have solution for

    1) in-line code suppressing
    2) global setting suppressing

    I've searched the internet but still not sure how to do the suppressing.

    For method 1), They said to add the lines:

    [assembly: SuppressMessage("Microsoft.Design", "SA1202:All private methods must be placed after all public methods", Scope = "namespace", Target = "Consus.Client.ClientVaultModule.Services.OnlineDetection")]

    But they do not say where and which namespace to be used.

    For method 2), they said to use GlobalSuppress file but it seems not easy to search for a how-to do it at the moment.

    Please help.

    [Edited] In my case, I have the warning about SA1202: All private methods must be placed after all public methods which is bothering since I group my related codes into regions. I want to suppress those warning for just some certain methods.