코드 분석 경고를 표시하지 않는 방법
이 문서에서는 .NET 앱을 빌드할 때 코드 분석에서 경고를 표시하지 않을 수 있는 다양한 방법을 설명합니다. 여기에 제공된 정보를 사용하여 코드 품질 규칙, 코드 스타일 규칙 및 타사 분석기 규칙을 표시하지 않을 수 있습니다.
팁
Visual Studio를 개발 환경으로 사용하는 경우 ‘전구’ 메뉴는 경고를 표시하지 않는 코드를 생성하는 옵션을 제공합니다. 자세한 내용은 위반 표시 안 함을 참조하세요.
규칙 사용 안 함
심각도를 EditorConfig 또는 AnalyzerConfig 구성 파일에서 none
으로 설정하여 경고를 발생시키는 규칙을 사용하지 않도록 설정할 수 있습니다. 이 작업은 사용하는 구성 파일의 범위에 따라 전체 파일 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정합니다.
[*.{cs,vb}]
dotnet_diagnostic.<rule-ID>.severity = none
규칙 심각도에 대한 자세한 내용은 규칙 심각도 구성을 참조하세요.
전처리기 지시문 사용
#pragma warning(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;
}
}
전역 비표시 파일에 특성을 추가하는 경우 원하는 수준(예: "member"
)으로 비표시 범위를 지정합니다. Target 속성을 사용하여 경고를 표시하지 않을 API를 지정합니다.
[assembly: SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.", Scope = "member", Target = "~M:MyApp.Program.IgnorableCharacters")]
Target
특성에서 참조하려는 API에 ‘설명서 ID’를 사용합니다. 설명서 ID에 대한 자세한 내용은 설명서 ID 형식을 참조하세요.
명시적으로 제공된 사용자 소스에 매핑되지 않는 컴파일러 생성 코드에 대한 경고를 표시하지 않으려면 전역 비표시 파일에 비표시 특성을 넣어야 합니다. 예를 들어 다음 코드는 컴파일러에서 내보낸 생성자에 대한 위반을 표시하지 않습니다.
[module: SuppressMessage("Design", "CA1055:AbstractTypesDoNotHavePublicConstructors", Scope="member", Target="MyTools.Type..ctor()")]
참고 항목
.NET