Visual Studio의 코드 분석 FAQ

이 페이지에서는 Visual Studio .NET Compiler Platform 기반 코드 분석에 대한 질문과 답변을 확인할 수 있습니다.

코드 분석과 EditorConfig

코드 스타일 검사에 코드 분석 또는 EditorConfig를 사용해야 하나요?

코드 분석과 EditorConfig 파일은 함께 작동합니다. EditorConfig 파일 또는 텍스트 편집기 옵션 페이지에서 코드 스타일을 정의하는 경우 실제로 Visual Studio에서 기본 제공되는 코드 분석기를 구성하게 됩니다. EditorConfig 파일을 사용하여 분석기 규칙을 사용하거나 사용하지 않도록 설정할 수 있고 NuGet 분석기 패키지를 구성할 수도 있습니다.

EditorConfig와 규칙 집합

규칙 집합 또는 EditorConfig 파일을 사용하여 분석기를 구성해야 하나요?

규칙 집합과 EditorConfig 파일은 공존할 수 있으며 모두 분석기를 구성하는 데 사용할 수 있습니다. EditorConfig 파일과 규칙 집합을 모두 사용하면 규칙을 사용하거나 사용하지 않도록 설정하고 심각도를 설정할 수 있습니다.

그러나 EditorConfig 파일은 규칙을 구성하는 추가적인 방법도 지원합니다.

규칙 집합 및 EditorConfig 파일 외에도 일부 분석기는 C# 및 VB 컴파일러에 대한 추가 파일로 표시된 텍스트 파일을 사용하여 구성됩니다.

참고 항목

  • EditorConfig 파일은 Visual Studio 2019 버전 16.3 이상에서만 규칙을 사용하도록 설정하고 해당 심각도를 설정하는 데 사용할 수 있습니다.
  • EditorConfig 파일은 레거시 분석을 구성하는 데 사용할 수 없지만 규칙 집합은 그렇게 사용할 수 있습니다.

CI(연속 통합) 빌드의 코드 분석

.NET Compiler Platform 기반 코드 분석은 CI(연속 통합) 빌드에서 작동하나요?

예. NuGet 패키지에서 설치되는 분석기에서 이러한 규칙은 CI 빌드 도중을 포함하여 빌드 시간에 적용됩니다. CI 빌드에 사용되는 분석기는 규칙 집합과 EditorConfig 파일 모두의 규칙 구성을 준수합니다. 현재 Visual Studio에서 기본 제공되는 코드 분석기는 NuGet 패키지로 사용할 수 없으므로 이러한 규칙을 CI 빌드에서 적용할 수 없습니다.

IDE 분석기와 StyleCop

Visual Studio IDE 코드 분석기와 StyleCop 분석기 간의 차이점은 무엇인가요?

Visual Studio IDE에는 코드 스타일 및 품질 문제를 모두 찾는 기본 제공 분석기가 포함되어 있습니다. 이러한 규칙은 도입된 새 언어 기능을 사용하고 코드의 유지 관리 기능을 개선하는 데 도움이 됩니다. IDE 분석기는 각 Visual Studio 릴리스에서 지속적으로 업데이트됩니다.

StyleCop 분석기는 NuGet 패키지로 설치되는 타사 분석기로, 코드에서 스타일 일관성을 확인합니다. 일반적으로 StyleCop 규칙을 사용하면 한 스타일을 다른 스타일보다 권장하지 않고도 코드 베이스에 대한 개인 기본 설정을 설정할 수 있습니다.

코드 분석기와 레거시 분석

레거시 분석과 .NET Compiler Platform 기반 코드 분석의 차이점은 무엇인가요?

.NET Compiler Platform 기반 코드 분석은 실시간 및 컴파일 중에 소스 코드를 분석하는 반면 레거시 분석은 빌드가 완료된 후 이진 파일을 분석합니다. 자세한 내용은 .NET Compiler Platform 기반 분석과 레거시 분석을 참조하세요.

FxCop 분석기와 .NET 분석기

FxCop 분석기와 .NET 분석기 간 차이점은 무엇인가요?

FxCop 분석기와 .NET 분석기는 모두 FxCop CA 규칙의 .NET Compiler Platform(“Roslyn”) 분석기 구현을 나타냅니다. Visual Studio 2019 16.8 및 .NET 5.0 이전에 이러한 분석기는 Microsoft.CodeAnalysis.FxCopAnalyzersNuGet 패키지로 제공되었습니다. Visual Studio 2019 16.8 및 .NET 5.0부터 이러한 분석기는 .NET SDK에 포함됩니다. 분석기는 Microsoft.CodeAnalysis.NetAnalyzersNuGet 패키지로 사용할 수도 있습니다. FxCop 분석기에서 .NET 분석기로 마이그레이션을 고려하세요.

경고를 오류로 처리

내 프로젝트에서는 빌드 옵션을 사용하여 경고를 오류로 처리합니다. 레거시 분석에서 소스 코드 분석으로 마이그레이션한 후 모든 코드 분석 경고가 이제 오류로 표시됩니다. 어떻게 하면 이를 방지할 수 있나요?

코드 분석 경고가 오류로 처리되지 않도록 하려면 다음 단계를 따릅니다.

  1. 다음 내용을 사용하여 .props 파일을 만듭니다.

    <Project>
       <PropertyGroup>
          <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
       </PropertyGroup>
    </Project>
    
  2. .csproj 또는 .vbproj 프로젝트 파일에 줄을 추가하여 이전 단계에서 만든 .props 파일을 가져옵니다. 이 줄은 분석기 .props 파일을 가져오는 줄 앞에 배치해야 합니다. 예를 들어 .props 파일의 이름이 codeanalysis.props인 경우 아래와 같이 배치해야 합니다.

    ...
    <Import Project="..\..\codeanalysis.props" Condition="Exists('..\..\codeanalysis.props')" />
    <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" />
    ...
    

코드 분석 솔루션 속성 페이지

솔루션의 Code Analysis 속성 페이지는 어디에 있나요?

솔루션 수준의 Code Analysis 속성 페이지는 더 안정적인 공유 속성 그룹을 위해 제거되었습니다. 프로젝트 수준에서 Code Analysis를 관리하기 위해 Code Analysis 속성 페이지를 계속 사용할 수 있습니다. (관리형 프로젝트의 경우 규칙 구성을 위해 규칙 집합에서 EditorConfig로 마이그레이션하는 것이 좋습니다.) 솔루션 또는 리포지토리의 여러/모든 프로젝트에서 규칙 집합을 공유하기 위해 공유 props/targets 파일 또는 Directory.props/Directory.targets 파일에서 CodeAnalysisRuleSet 속성으로 속성 그룹을 정의하는 것이 좋습니다. 모든 프로젝트에서 가져오는 이러한 일반적인 props 또는 targets 파일이 없는 경우, 디렉터리 또는 하위 디렉터리에 정의된 모든 프로젝트 파일이 자동으로 가져오는 최상위 솔루션 디렉터리의 Directory.props 또는 Directory.targets 파일에 해당 속성 그룹을 추가하는 것이 좋습니다.