다음을 통해 공유


코드 분석에 대한 구성 옵션

코드 분석 규칙에는 다양한 구성 옵션이 있습니다. 이러한 옵션 일부는 구문을 사용하여 분석기 구성 파일에서 <option key> = <option value> 구문을 사용하여 키-값 쌍으로 지정됩니다. 코드 분석을 전체적으로 구성하는 다른 옵션은 프로젝트 파일에서 MSBuild 속성으로 사용할 수 있습니다.

가장 일반적으로 구성하는 옵션은 규칙의 심각도입니다. 코드 품질 규칙코드 스타일 규칙을 포함하여 규칙의 심각도 수준을 구성할 수 있습니다. 예를 들어 규칙을 경고로 사용하도록 설정하려면 분석기 구성 파일에 다음 키-값 쌍을 추가합니다.

dotnet_diagnostic.<rule ID>.severity = warning

규칙 동작을 사용자 지정하는 추가 옵션을 구성할 수도 있습니다.

  • 코드 품질 규칙에는 규칙이 적용되어야 하는 메서드 이름과 같은 동작 옵션이 있습니다.
  • 코드 스타일 규칙에는 새 줄이 바람직한 위치와 같은 스타일 기본 설정 옵션이 있습니다.
  • 타사 분석기 규칙은 사용자 지정 키 이름 및 값 형식을 사용하여 자체 구성 옵션을 정의할 수 있습니다.

일반 옵션

이러한 옵션은 전체 코드 분석에 적용됩니다. 이것을 특정 규칙에만 적용할 수는 없습니다.

추가 옵션은 코드 분석 속성을 참조하세요.

분석 모드

.NET SDK에는 모든 코드 분석 규칙이 포함되어 있지만, 그 중 일부만 기본적으로 사용하도록 설정되어 있습니다. 분석 모드는 사용하도록 설정할 규칙 집합(있는 경우)을 결정합니다. 대부분의 또는 모든 규칙을 사용하는 보다 적극적인 분석 모드를 선택할 수 있습니다. 또는 대부분의 또는 모든 규칙이 사용하지 않도록 설정되는 보다 보수적인 분석 모드를 선택한 다음 필요에 따라 특정 규칙을 옵트인할 수 있습니다. <AnalysisMode> MSBuild 속성을 프로젝트 파일에 추가하여 분석 모드를 설정합니다.

<PropertyGroup>
  <AnalysisMode>Recommended</AnalysisMode>
</PropertyGroup>

.NET 6부터 <AnalysisMode<범주>> MSBuild 속성을 사용하여 규칙 범주를 대량으로 사용하도록 설정할 수도 있습니다.

참고 항목

AnalysisMode과(와) 같은 MSBuild 속성을 사용하여 코드 분석을 구성하는 경우 구성 파일에 설정한 대량 구성 옵션은 무시됩니다. 예를 들어 .editorconfig 파일에서 모든 규칙 또는 규칙 범주를 대량으로 사용하도록 설정한 경우 해당 구성은 무시됩니다.

코드 분석 사용

.NET 5 이상 버전을 대상으로 하는 프로젝트는 기본적으로 코드 분석이 사용하도록 설정되어 있습니다. .NET 5+ SDK가 있지만 프로젝트가 다른 .NET 구현을 대상으로 하는 경우 프로젝트 파일에서 EnableNETAnalyzers 속성을 true로 설정하여 코드 분석을 사용하도록 수동으로 설정해야 합니다.

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

생성된 코드 제외

.NET 코드 분석기 경고는 디자이너에서 생성된 파일과 같은 생성된 코드 파일에는 유용하지 않습니다. 이러한 파일은 사용자가 편집하여 위반을 수정할 수 없습니다. 대부분의 경우 코드 분석기는 생성된 코드 파일을 건너뛰고 이러한 파일에 대한 위반을 보고하지 않습니다.

기본적으로 특정 파일 확장명 또는 자동 생성 파일 헤더를 포함하는 파일은 생성된 코드 파일로 처리됩니다. 예를 들어 .designer.cs 또는 .generated.cs로 끝나는 파일 이름은 생성된 코드로 간주됩니다. 이 구성 옵션을 사용하면 생성된 코드로 처리할 추가 명명 패턴을 지정할 수 있습니다. 구성 파일generated_code = true | false 항목을 추가하여 추가 파일 및 폴더를 구성할 수 있습니다. 예를 들어 이름이 .MyGenerated.cs로 끝나는 모든 파일을 생성된 코드로 처리하려면 다음 항목을 추가합니다.

[*.MyGenerated.cs]
generated_code = true

규칙별 옵션

규칙별 옵션은 단일 규칙, 규칙 집합 또는 모든 규칙에 적용할 수 있습니다. 규칙별 옵션은 다음과 같습니다.

심각도 수준

다음 표에서는 코드 품질코드 스타일 규칙을 포함하여 모든 분석기 규칙에 대해 구성할 수 있는 다양한 규칙 심각도를 보여 줍니다.

심각도 구성 값 빌드 시간 동작
error 위반이 빌드 ‘오류’로 표시되고 빌드가 실패합니다.
warning 위반이 빌드 ‘경고’로 표시되지만 빌드가 실패하지 않습니다(경고를 오류로 처리하도록 설정하지 않은 경우).
suggestion 위반이 빌드 ‘메시지’로 표시되고 Visual Studio IDE에서 제안 사항으로 표시됩니다. (Visual Studio에서 제안은 처음 두 개의 문자 아래에 세 개의 회색 점으로 표시됩니다.)
silent 위반이 사용자에게 표시되지 않습니다.

그러나 코드 스타일 규칙의 경우 Visual Studio 코드 생성 기능은 여전히 이 스타일로 코드를 생성합니다. 이러한 규칙은 정리에도 참여하고 Visual Studio에서 빠른 작업 및 리팩터링 메뉴에 표시됩니다.
none 규칙은 전혀 표시되지 않습니다.

그러나 코드 스타일 규칙의 경우 Visual Studio 코드 생성 기능은 여전히 이 스타일로 코드를 생성합니다.
default 규칙의 기본 심각도가 사용됩니다. 각 .NET 릴리스의 기본 심각도는 roslyn-analyzers 리포지토리에 나열되어 있습니다. 이 표에서 ‘Disabled’는 none에 해당하고 ‘Hidden’은 silent에 해당하며 ‘Info’는 suggestion에 해당합니다.

범위

  • 단일 규칙

    단일 규칙에 대한 규칙 심각도를 설정하려면 다음 구문을 사용합니다.

    dotnet_diagnostic.<rule ID>.severity = <severity value>
    
  • 규칙 범주

    규칙 범주에 대한 기본 규칙 심각도를 설정하려면 다음 구문을 사용합니다. 그러나 이 심각도 설정은 기본적으로 사용하도록 설정된 해당 범주의 규칙에만 영향을 줍니다.

    dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity value>
    

    규칙 범주에는 다양한 범주가 나열되고 설명됩니다. 또한 관련 참조 페이지에서 특정 규칙의 범주(예: CA1000)를 찾을 수 있습니다.

  • 모든 규칙

    모든 분석기 규칙에 대한 기본 규칙 심각도를 설정하려면 다음 구문을 사용합니다. 그러나 이 심각도 설정은 기본적으로 사용하도록 설정된 규칙에만 영향을 줍니다.

    dotnet_analyzer_diagnostic.severity = <severity value>
    

Important

단일 항목을 사용하여 여러 규칙(규칙 ‘범주’ 또는 ‘모든’ 규칙)에 대한 심각도 수준을 구성할 때 심각도는 기본적으로 사용하도록 설정된 규칙에만 적용됩니다. MSBuild 속성 <AnalysisMode> 또는 < AnalysisLevel>을 사용하여 모든 규칙을 사용하도록 설정하면 대량 dotnet_analyzer_diagnostic 옵션이 무시됩니다. 이러한 이유로 <AnalysisMode<범주>>All(으)로 설정하여 규칙 범주를 사용하도록 설정하는 것이 좋습니다.

참고 항목

단일 규칙의 심각도를 설정하기 위한 접두사 dotnet_diagnostic은(는) 범주를 통해 또는 모든 규칙에 대해 심각도를 구성하기 위한 접두사 dotnet_analyzer_diagnostic과(와) 약간 다릅니다.

우선 순위

동일한 규칙 ID에 적용할 수 있는 여러 심각도 구성 항목이 있는 경우 우선 순위는 다음 순서로 선택됩니다.

  • 범주에 대한 항목이 모든 분석기 규칙에 대한 항목보다 우선적으로 적용됩니다.
  • ID별 개별 규칙에 대한 항목이 범주에 대한 항목보다 우선적으로 적용됩니다.

다음 예제를 살펴보세요. 여기서 CA1822에 ‘성능’ 범주가 있습니다.

[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion

앞의 예제에서는 세 가지 심각도 항목을 모두 CA1822에 적용할 수 있습니다. 그러나 지정된 우선 순위 규칙을 사용하여 첫 번째 규칙 ID 기반 항목이 다음 항목보다 먼저 적용됩니다. 이 예제에서 CA1822은 error의 유효 심각도를 갖습니다. ‘성능’ 범주 내의 다른 모든 규칙은 warning의 심각도를 갖습니다.

파일 간 우선 순위를 결정하는 방법에 대한 자세한 내용은 구성 파일 문서의 우선 순위 섹션을 참조하세요.