A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://docs.microsoft.com/en-us/visualstudio/code-quality/in-source-suppression-overview below:

Suppress code analysis violations - Visual Studio (Windows)

If you collaborate with your team as you create code, it's often useful to indicate that a warning isn't applicable. Suppressing code analysis violations indicates to team members that the code was reviewed, and the warning can be suppressed. The following sections describe the different ways to suppress code analysis violations using the Visual Studio IDE.

Suppress violations using the EditorConfig file

In the EditorConfig file for your solution or project, add an entry for each rule you want to configure and set its severity to none. For example, dotnet_diagnostic.CA1822.severity = none. For more information, see Manually configure rule severity in an EditorConfig file. To add an EditorConfig file, see Add an EditorConfig file to a project.

Suppress violations in source code

You can suppress violations in your source code using a preprocessor directive, which suppresses violations for a specific line of code:

Or, you can use the SuppressMessageAttribute attribute to suppress a warning in your C# and Visual Basic code.

Suppress violations using the code editor

To suppress violations using the code editor, follow these steps:

  1. Place the cursor in the line of code with the violation and press Ctrl+Period (.) or Alt+Enter to open the Quick Actions menu.

  2. Select Suppress or configure issues > Suppress <rule number>, and then choose either in Source or in Source (attribute).

Suppress violations using the Error List

To suppress violations using the Error List window, follow these steps:

  1. From the Error List window, select the rules you want to suppress.

  2. Right-click, and then select Suppress > In Source.

    The Preview Changes dialog opens and shows a preview of the C# #pragma warning directive or Visual Basic #Disable warning directive added to the source code.

  3. Select Apply to save the changes to your code file.

Exclude Error List build diagnostics

If you don't see the Suppress menu option in the Error List window, the violation is likely from a build and not live analysis. The Error List window displays diagnostics, or rule violations, from both live code analysis and builds. Because build diagnostics can be stale, for example, if you edited the code to fix the violation but didn't rebuild it, you can't always suppress these diagnostics from the Error List.

Diagnostics from live analysis, or IntelliSense, are always up-to-date with current sources and can always be suppressed from the Error List. To exclude build diagnostics from your selection, follow these steps:

  1. From the Error List source filter dropdown list, change the selection from Build + IntelliSense to IntelliSense Only.

  2. Select the diagnostics you want to suppress and proceed as described previously.

Suppress violations using a global suppression file

The global suppression file uses the SuppressMessageAttribute attribute to suppress code violations.

Use a global suppression file from the code editor

To suppress violations with a global suppression file by using the code editor, follow these steps:

  1. In the code editor, place the cursor on a line of code with a violation and press Ctrl+Period (.) or Alt+Enter to open the Quick Actions menu.

  2. Select Suppress <rule number>, and then choose in Suppression File.

    Visual Studio creates a tab in the code editor containing the new global suppression file.

Use a global suppression file from the Error List

To suppress violations with a global suppression file by using the Error List window, follow these steps:

  1. From the Error List window, select the rules you want to suppress.

  2. Right-click, and then select Suppress > In Suppression File.

    The Preview Changes dialog box opens and shows a preview of the SuppressMessageAttribute attribute added to the global suppression file.

  3. Select Apply to save the global suppression file.

Suppress all current violations

Suppressing all current violations is sometimes referred to as baselining. To suppress all current violations in a solution or project, follow these steps:

  1. From the Visual Studio menu bar, select Analyze > Build and Suppress Active Issues.

  2. Select For solution to suppress violations for the entire solution, or select For <project name> to suppress violations for your project only.

Suppress violations using project settings

To suppress violations by using Solution Explorer project settings, follow these steps:

  1. From Solution Explorer, select your project.

  2. Right-click, and then select Properties (or press Alt + Enter).

  3. From the Properties window, select Code Analysis from the left pane, and then clear Suppress results from generated code.

Suppress violations using a rule set

From the rule set editor, clear the checkbox next to its name or set Action to None.

In-source suppression and the SuppressMessageAttribute attribute

In-source suppression (ISS) uses the SuppressMessageAttribute attribute to suppress a warning. You can add the SuppressMessageAttribute attribute to the source file near the code segment that generated the warning.

You can either enter the attribute manually in the code editor, or add the attribute automatically as follows:

  1. In the code editor, place the cursor on a line of code with a violation and press Ctrl+Period (.) or Alt+Enter to open the Quick Actions menu.

  2. Select Suppress or configure issues > Suppress <rule number> from the Quick Actions menu.

  3. Do one of the following steps:

The SuppressMessageAttribute attribute is a conditional attribute, which is included in the metadata of your managed code assembly. This attribute is included only if the CODE_ANALYSIS compilation symbol is defined at compile time.

In C++ and CLI code only, use the macros CA_SUPPRESS_MESSAGE or CA_GLOBAL_SUPPRESS_MESSAGE in the header file to add the attribute.

If you migrate a project to the latest version of Visual Studio, you might see a large number of code analysis warnings. If you aren't ready to fix the warnings, you can suppress all of them by selecting Analyze > Build and Suppress Active Issues.

Note

Don't use in-source suppressions on release builds, to prevent shipping the in-source suppression metadata accidentally.

SuppressMessageAttribute attribute format

The SuppressMessageAttribute attribute has the following format:

[Scope:SuppressMessage("Rule Category", "Rule Id", Justification = "Justification", MessageId = "MessageId", Scope = "Scope", Target = "Target")]
<Scope:SuppressMessage("Rule Category", "Rule Id", Justification = "Justification", MessageId = "MessageId", Scope = "Scope", Target = "Target")>

The properties of the attribute include:

When you see warnings in Visual Studio, you can view examples of SuppressMessageAttribute by adding a suppression to the global suppression file. The suppression attribute and its required properties appear in a preview window.

SuppressMessageAttribute usage

Code analysis warnings are suppressed at the level to which the SuppressMessageAttribute attribute is applied. For example, the attribute can be applied at the assembly, module, type, member, or parameter level. The purpose of applying this attribute is to tightly couple the suppression information to the code where the violation occurs.

The general form of suppression includes the rule category and a rule identifier, which contains an optional human-readable representation of the rule name. For example:

[SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")]

If there are strict performance reasons for minimizing in-source suppression metadata, the rule name can be omitted. The rule category and its rule ID together form a sufficiently unique rule identifier. For example:

[SuppressMessage("Microsoft.Design", "CA1039")]

For maintainability reasons, omitting the rule name isn't recommended.

Suppress selective violations within a method body

Suppression attributes can be applied to a method, but can't be embedded within a method body. All violations of a particular rule are suppressed if you add the SuppressMessageAttribute attribute to the method.

In some cases, you might want to suppress a particular instance of the violation. Consider the example where future code isn't automatically exempt from the code analysis rule. Certain code analysis rules allow you to suppress a particular instance of the violation by using the MessageId property of the SuppressMessageAttribute attribute. In general, legacy rules for violations on a particular symbol (a local variable or parameter) respect the MessageId property. CA1500:VariableNamesShouldNotMatchFieldNames is an example of such a rule. However, legacy rules for violations on executable code (non-symbol) don't respect the MessageId property. Also, .NET Compiler Platform ("Roslyn") analyzers don't respect the MessageId property.

To suppress a particular symbol violation of a rule, specify the symbol name for the MessageId property of the SuppressMessageAttribute attribute. The following example shows code with two violations of CA1500:VariableNamesShouldNotMatchFieldNames: one violation for the name variable and another violation for the age variable. Only the violation for the age symbol is suppressed.

public class Animal
{
    int age;
    string name;

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1500:VariableNamesShouldNotMatchFieldNames", MessageId = "age")]
    private void PrintInfo()
    {
        int age = 5;
        string name = "Charlie";

        Console.WriteLine($"Age {age}, Name {name}");
    }
}
Public Class Animal
    Dim age As Integer
    Dim name As String

    <CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1500:VariableNamesShouldNotMatchFieldNames", MessageId:="age")>
    Sub PrintInfo()
        Dim age As Integer = 5
        Dim name As String = "Charlie"

        Console.WriteLine("Age {0}, Name {1}", age, name)
    End Sub

End Class
Global-level suppressions

The managed code analysis tool examines the SuppressMessageAttribute attributes that are applied at the assembly, module, type, member, or parameter level. It also submits violations against resources and namespaces. These violations must be applied at the global level and are scoped and targeted. For example, the following message suppresses a namespace violation:

[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MyNamespace")]

For global-level suppressions:

Global suppression file

The global suppression file maintains suppressions that are either global-level suppressions or suppressions that don't specify a target. For example, suppressions for assembly-level violations are stored in this file. Additionally, some ASP.NET suppressions are stored in this file because project-level settings aren't available for code behind a form. Visual Studio creates and adds a global suppression file to your project the first time you select the In Project Suppression File option of the Suppress command in the Error List window.

Module suppression scope

You can suppress code quality violations for the entire assembly by using the module scope.

For example, the following attribute in your GlobalSuppressions project file suppresses the ConfigureAwait violation for an ASP.NET Core project:

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "ASP.NET Core doesn't use thread context to store request context.", Scope = "module")]

Generated code

Managed code compilers and some external tools generate code to help rapid code development. Compiler-generated code that appears in source files is marked with the GeneratedCodeAttribute attribute.

For source code analysis, you can suppress messages in generated code in an .editorconfig file. For more information, see Exclude generated code.

For legacy code analysis, you can choose whether to suppress code analysis warnings and errors for generated code. For information about how to suppress such warnings and errors, see Suppress code analysis warnings for generated code.

Note

Code analysis ignores GeneratedCodeAttribute when it is applied to either an entire assembly or a single parameter.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4