다음을 통해 공유


CA1041: ObsoleteAttribute 메시지를 제공하십시오.

속성
규칙 ID CA1041
타이틀 ObsoleteAttribute 메시지를 제공하세요.
범주 디자인
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 제안 사항

원인

형식이나 멤버는 System.ObsoleteAttribute.Message 속성을 지정하지 않은 System.ObsoleteAttribute 특성을 사용하여 표시됩니다.

기본적으로 이 규칙은 외부에 표시되는 형식과 멤버만 확인하지만 이는 구성 가능합니다.

규칙 설명

ObsoleteAttribute는 사용되지 않는 라이브러리 형식 및 멤버를 표시하는 데 사용됩니다. 라이브러리 소비자는 사용되지 않는 것으로 표시된 형식이나 멤버를 사용해서는 안 됩니다. 이는 지원되지 않으며 나중 버전의 라이브러리에서 제거될 수 있기 때문입니다. ObsoleteAttribute를 사용하여 표시된 형식 또는 멤버를 컴파일하면 특성의 Message 속성이 표시됩니다. 사용되지 않는 형식 또는 멤버에 대한 정보가 사용자에게 제공됩니다. 해당 정보에는 일반적으로 사용되지 않는 형식 또는 사용되지 않는 멤버가 라이브러리 디자이너에서 지원되는 기간 및 사용하려는 기본 설정 대체가 포함됩니다.

위반 문제를 해결하는 방법

해당 규칙 위반 문제를 해결하려면 message 매개 변수를 ObsoleteAttribute 생성자에 추가합니다.

경고를 표시하지 않는 경우

Message 속성이 사용되지 않는 형식 또는 사용되지 않는 멤버에 대한 중요한 정보를 제공하기 때문에 해당 규칙에서 경고를 표시하지 마세요.

분석할 코드 구성

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

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

특정 API 화면 포함

접근성을 기반으로 이 규칙을 실행할 코드베이스의 파트를 구성할 수 있습니다. 예를 들어 규칙이 퍼블릭이 아닌 API 표면에서만 실행되도록 지정하려면 프로젝트의 .editorconfig 파일에 다음 키-값 쌍을 추가합니다.

dotnet_code_quality.CAXXXX.api_surface = private, internal

예시

다음 예제에서는 ObsoleteAttribute가 올바르게 선언된 사용되지 않는 멤버를 보여 줍니다.

[ObsoleteAttribute("This property is obsolete and will be removed in a " +
"future version. Use the FullName property instead.", false)]
public string Name
{
    get => "Name";
}
Imports System

Namespace ca1041

    Public Class ObsoleteAttributeOnMember

        <ObsoleteAttribute("This property is obsolete and will " &
             "be removed in a future version. Use the FirstName " &
             "and LastName properties instead.", False)>
        ReadOnly Property Name As String
            Get
                Return "Name"
            End Get
        End Property

        ReadOnly Property FirstName As String
            Get
                Return "FirstName"
            End Get
        End Property

        ReadOnly Property LastName As String
            Get
                Return "LastName"
            End Get
        End Property

    End Class

End Namespace

참고 항목