다음을 통해 공유


CA1801: 사용되지 않은 매개 변수를 검토하십시오.

속성
규칙 ID CA1801
타이틀 사용되지 않은 매개 변수를 검토하세요.
범주 사용 현황
수정 사항이 주요 변경인지 여부 작업을 중단하지 않는 변경 - 변경 내용과 관계없이 멤버가 어셈블리 외부에 표시되지 않는 경우입니다.

작업을 중단하지 않는 변경 - 본문 내에서 매개 변수를 사용하도록 멤버를 변경하는 경우입니다.

호환성이 손상되는 변경 - 매개 변수를 제거하고 어셈블리 외부에 표시되는 경우입니다.
.NET 8에서 기본적으로 사용 아니요

원인

메서드 본문에서 사용되지 않는 매개 변수가 메서드 시그니처에 있습니다.

이 규칙은 다음과 같은 종류의 메서드를 검사하지 않습니다.

  • 대리자가 참조하는 메서드

  • 이벤트 처리기로 사용되는 메서드

  • serialization 생성자(지침 참조)

  • serialization GetObjectData 메서드

  • abstract(Visual Basic의 경우 MustOverride) 한정자로 선언된 메서드

  • virtual(Visual Basic의 경우 Overridable) 한정자로 선언된 메서드

  • override(Visual Basic의 경우 Overrides) 한정자로 선언된 메서드

  • extern(Visual Basic의 경우 Declare 문) 한정자로 선언된 메서드

이 규칙은 버림 기호(예: _, _1, _2)로 이름이 지정되는 매개 변수에 플래그를 지정하지 않습니다. 따라서 시그니처 요구 사항에 필요한 매개 변수의 경고 노이즈가 감소합니다. 이러한 매개 변수의 예로는 대리자로 사용되는 메서드, 특별한 특성이 있는 매개 변수, 코드 내에서 참조되지는 않지만 런타임 시 프레임워크에서 암시적으로 액세스하는 값을 가진 매개 변수가 있습니다.

참고 항목

이 규칙은 사용되지 않으며 대신 IDE0060이 사용됩니다. 빌드 시 IDE0060 분석기를 적용하는 방법에 대한 자세한 내용은 코드 스타일 분석을 참조하세요.

규칙 설명

메서드 본문에서 사용되지 않는 비가상 메서드에서 매개 변수를 검토하여 액세스 오류와 관련된 부정확한 부분이 없는지 확인합니다. 사용되지 않는 매개 변수로 인해 유지 관리 및 성능 비용이 발생합니다.

경우에 따라 이 규칙의 위반이 메서드의 구현 버그를 가리킬 수 있습니다. 예를 들어 매개 변수가 메서드 본문에서 사용되었어야 합니다. 이전 버전과의 호환성으로 인해 매개 변수가 있어야 하는 경우 이 규칙의 경고를 표시하지 않습니다.

위반 문제를 해결하는 방법

이 규칙의 위반 문제를 해결하려면 사용되지 않는 매개 변수를 제거(호환성이 손상되는 변경)하거나 메서드 본문에서 매개 변수를 사용(작업을 중단하지 않는 변경)합니다.

경고를 표시하지 않는 경우

다음 경우에는 이 규칙의 경고를 표시하지 않아도 됩니다.

  • 이전에 제공한 코드에서 수정 사항이 호환성이 손상되는 변경에 해당하는 경우입니다.

  • Microsoft.VisualStudio.TestTools.UnitTesting.Assert에 대한 사용자 지정 확장 메서드의 this 매개 변수입니다. Assert 클래스의 함수가 정적이므로 메서드 본문의 this 매개 변수에 액세스할 필요가 없습니다.

경고 표시 안 함

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

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

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

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

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

분석할 코드 구성

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

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

특정 API 화면 포함

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

dotnet_code_quality.CAXXXX.api_surface = private, internal

기본적으로 CA1801 규칙은 모든 API 표면(public, internal, private)에 적용됩니다.

예시

다음 예제에서는 두 가지 메서드를 보여 줍니다. 한 메서드는 규칙을 위반하고 다른 메서드는 규칙을 충족합니다.

// This method violates the rule.
public static string GetSomething(int first, int second)
{
    return first.ToString(CultureInfo.InvariantCulture);
}

// This method satisfies the rule.
public static string GetSomethingElse(int first)
{
    return first.ToString(CultureInfo.InvariantCulture);
}