다음을 통해 공유


CA1505: 유지 관리할 수 없는 코드는 사용하지 마십시오.

속성
규칙 ID CA1505
제목 유지 관리할 수 없는 코드를 사용하지 마세요.
범주 유지 관리
수정 사항이 주요 변경인지 여부 주요 변경 아님
기본 임계값 10
.NET 9에서 기본적으로 사용 아니요

원인

형식, 메서드, 필드, 속성 또는 이벤트에는 유지 관리 효율성 인덱스 값이 낮습니다.

규칙 설명

규칙은 형식, 메서드, 필드, 속성 또는 이벤트의 유지 관리 가능성 인덱스가 10보다 작은 경우 위반을 보고합니다. 그러나 임계값을 구성할 수 있습니다.

유지 관리 인덱스는 코드 줄, 프로그램 볼륨, 순환 복잡성과 같은 메트릭을 사용하여 계산됩니다. (프로그램 볼륨 은 코드의 연산자 및 피연산자 수를 기반으로 하는 형식 또는 메서드를 이해하기 어려운 측정값입니다. 주기적 복잡성 은 형식 또는 메서드의 구조적 복잡성을 측정하는 측정값입니다. 코드 메트릭에 대해 자세히 알아보려면 관리 코드의 복잡성 및 유지 관리 용이성 측정을 참조하세요.

낮은 유지 관리 인덱스는 형식 또는 메서드가 유지 관리하기 어려울 수 있어 다시 설계하기 적합한 후보임을 나타냅니다.

위반 문제를 해결하는 방법

이 위반 문제를 해결하려면 형식 또는 메서드를 다시 설계하여 더 작고 집중된 형식 또는 메서드로 분할합니다.

경고를 표시하지 않는 경우

형식 또는 메서드를 분할할 수 없거나 크기는 크지만 유지 관리 가능한 것으로 간주되면 이 경고를 표시하지 않아도 됩니다.

참고 항목

다음이 모두 적용되는 경우 이 규칙에서 가양성 경고가 표시될 수 있습니다.

  • Visual Studio 2022 버전 17.5 이상을 이전 버전의 .NET SDK(.NET 6 이하)와 함께 사용하고 있습니다.
  • .NET 6 SDK 분석기 또는 이전 버전의 분석기 패키지(예: Microsoft.CodeAnalysis.FxCopAnalyzers)를 사용하고 있습니다.

가양성은 C# 컴파일러의 호환성이 손상되는 변경으로 인해 발생합니다. 가양성 경고에 대한 수정 사항이 포함된 최신 분석기를 사용하는 것이 좋습니다. Microsoft.CodeAnalysis.NetAnalyzers 버전 7.0.0-preview1.22464.1 이상으로 업그레이드하거나 .NET 7 SDK에서 분석기를 사용하세요.

경고 표시 안 함

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

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

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

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

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

임계값 구성

이 규칙이 실행되는 임계값과 분석할 기호 종류를 구성할 수 있습니다. 허용되는 기호 종류는 다음과 같습니다.

  • Assembly
  • Namespace
  • Type
  • Method
  • Field
  • Event
  • Property
  1. CodeMetricsConfig.txt 텍스트 파일을 만듭니다.

  2. 텍스트 파일에 원하는 임계값을 다음 형식으로 추가합니다.

    CA1505: 20
    

    이 예제에서는 형식, 메서드, 필드, 속성 또는 이벤트의 유지 관리 가능성 인덱스가 20보다 작은 경우 규칙이 실행되도록 구성됩니다.

    CA1505(Method): 5
    CA1505(Type): 15
    

    이 예제에서는 메서드의 유지 관리 가능성 인덱스가 5보다 작거나 형식의 유지 관리 가능성 인덱스가 15보다 작은 경우 규칙이 실행되도록 구성됩니다. 이 구성 파일을 사용하면 규칙에서 유지 관리 가능성 인덱스가 기본 임계값(10)보다 작은 필드, 속성 및 이벤트에 계속 플래그를 지정합니다.

  3. 프로젝트 파일에서 구성 파일의 빌드 동작을 AdditionalFiles로 표시합니다. 다음은 그 예입니다.

    <ItemGroup>
      <AdditionalFiles Include="CodeMetricsConfig.txt" />
    </ItemGroup>
    

참고 항목