Share via


CA1852: 내부 형식 봉인

속성
규칙 ID CA1852
타이틀 내부 형식 봉인
범주 성능
수정 사항이 주요 변경인지 여부 주요 변경 아님
도입된 버전 .NET 7
.NET 8에서 기본적으로 사용 아니요

원인

어셈블리 외부에서 액세스할 수 없고 포함된 어셈블리 내에 하위 형식이 없는 형식은 sealed(visual Basic에서는 NotInheritable)으로 표시되지 않습니다.

규칙 설명

어셈블리 외부에서 형식에 액세스할 수 없고 포함된 어셈블리 내에 하위 형식이 없는 경우 안전하게 봉인할 수 있습니다. 형식을 봉인하면 성능이 향상될 수 있습니다.

분석 중인 어셈블리에 적용 System.Runtime.CompilerServices.InternalsVisibleToAttribute 하는 경우 이 규칙은 friend 어셈블리에서 필드를 사용할 수 있으므로 기본적으로 표시되지 sealed 않는 형식에 플래그를 지정하지 않습니다. 어셈블리를 분석하려면 분석할 코드 구성을 참조하세요.

위반 문제를 해결하는 방법

형식을 sealed(Visual Basic에서는 NotInheritable)로 표시합니다.

다음 코드 조각은 CA1852의 위반을 보여 줍니다.

internal class C
{ }
Class C
End Class

다음 코드 조각은 이 위반을 해결합니다.

internal sealed class C
{ }
NotInheritable Class C
End Class

경고를 표시하지 않는 경우

성능이 중요하지 않은 경우 경고를 표시하지 않는 것이 안전합니다.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#pragma warning disable CA1852
// The code that's violating the rule is on this line.
#pragma warning restore CA1852

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA1852.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

분석할 코드 구성

다음 옵션을 사용하여 이 규칙이 실행될 코드베이스 부분을 구성합니다.

이 규칙, 적용되는 모든 규칙 또는 적용되는 이 범주의 모든 규칙(성능)에 대해 이 옵션을 구성할 수 있습니다. 자세한 내용은 코드 품질 규칙 구성 옵션을 참조하세요.

InternalsVisibleTo 특성 무시

분석 중인 어셈블리가 내부 기호를 노출하는 데 사용하는 InternalsVisibleToAttribute 경우 기본적으로 이 규칙은 사용하지 않도록 설정됩니다. 어셈블리가 표시된 InternalsVisibleToAttribute경우에도 규칙이 실행되도록 지정하려면 프로젝트의 .editorconfig 파일에 다음 키-값 쌍을 추가합니다.

dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true

이 옵션은 .NET 8부터 사용할 수 있습니다.