다음을 통해 공유


코드 분석 경고를 표시하지 않는 방법

이 문서에서는 .NET 앱을 빌드할 때 코드 분석에서 경고를 표시하지 않을 수 있는 다양한 방법을 설명합니다. 여기에 제공된 정보를 사용하여 코드 품질 규칙, 코드 스타일 규칙 및 타사 분석기 규칙을 표시하지 않을 수 있습니다.

팁 (조언)

Visual Studio를 개발 환경으로 사용하는 경우 전구 메뉴에서 경고를 표시하지 않는 코드를 생성하는 옵션을 제공합니다. 자세한 내용은 위반 억제를 참조하세요.

규칙 비활성화

EditorConfig 또는 AnalyzerConfig none에서 심각도 를 설정하여 경고를 발생시키는 규칙을 사용하지 않도록 설정할 수 있습니다. 이 작업은 사용하는 구성 파일의 범위에 따라 전체 파일 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.<rule-ID>.severity = none

규칙 심각도에 대한 자세한 내용은 규칙 심각도 구성을 참조하세요.

전처리기 지시문 사용

#pragma 경고(C#) 또는 Disable(Visual Basic) 지시문을 사용하여 특정 코드 줄에 대한 경고를 억제합니다.

    try { ... }
    catch (Exception e)
    {
#pragma warning disable CA2200 // Rethrow to preserve stack details
        throw e;
#pragma warning restore CA2200 // Rethrow to preserve stack details
    }
    Try
        ...
    Catch e As Exception
#Disable Warning CA2200 ' Rethrow to preserve stack details
        Throw e
#Enable Warning CA2200 ' Rethrow to preserve stack details
    End Try

SuppressMessageAttribute 사용

소스 SuppressMessageAttribute 파일 또는 프로젝트의 전역 경고 제거 파일(GlobalSuppressions.cs 또는 GlobalSuppressions.vb)에서 경고를 억제하는 데 사용할 수 있습니다. 이 특성은 프로젝트 또는 파일의 특정 부분에서만 경고를 표시하지 않는 방법을 제공합니다.

특성에 필요한 SuppressMessageAttribute 두 가지 위치 매개 변수는 규칙의 범주규칙 ID입니다. 다음 코드 조각은 이러한 매개 변수를 전달합니다 "Usage""CA2200:Rethrow to preserve stack details" .

[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.")]
private static void IgnorableCharacters()
{
    try
    {
        ...
    }
    catch (Exception e)
    {
        throw e;
    }
}

전역 비표시 파일에 특성을 추가하면, 억제 범위가 원하는 수준으로 조정됩니다. 예를 들어 . Target 속성을 사용하여 경고를 억제해야 하는 API를 지정합니다.

[assembly: SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.", Scope = "member", Target = "~M:MyApp.Program.IgnorableCharacters")]

API를 참조하기 위해 문서 IDTarget 속성에서 사용하세요. 설명서 ID에 대한 자세한 내용은 설명서 ID 형식참조하세요.

명시적으로 제공된 사용자 원본에 매핑되지 않는 컴파일러 생성 코드에 대한 경고를 표시하지 않려면 전역 억제 파일에 표시 안 함 특성을 배치해야 합니다. 예를 들어, 다음 코드는 컴파일러가 생성한 생성자에 대한 위반을 차단합니다.

[module: SuppressMessage("Design", "CA1055:AbstractTypesDoNotHavePublicConstructors", Scope="member", Target="MyTools.Type..ctor()")]

참고하십시오