이 페이지에는 Visual Studio의 .NET 컴파일러 플랫폼 기반 코드 분석에 대한 몇 가지 질문과 대답이 포함되어 있습니다.
코드 분석 및 EditorConfig 비교
코드 스타일을 확인하기 위해 코드 분석 또는 EditorConfig를 사용해야 하나요?
코드 분석 및 EditorConfig 파일은 직접 작동합니다. EditorConfig 파일 또는 텍스트 편집기 옵션 페이지에서 코드 스타일을 정의할 때 실제로 Visual Studio에 기본 제공되는 코드 분석기를 구성합니다. EditorConfig 파일을 사용하여 분석기 규칙을 사용하거나 사용하지 않도록 설정하고 NuGet 분석기 패키지를 구성할 수도 있습니다.
EditorConfig 및 규칙 집합
규칙 집합 또는 EditorConfig 파일을 사용하여 분석기를 구성해야 하나요?
규칙 집합 및 EditorConfig 파일은 공존할 수 있으며 둘 다 분석기를 구성하는 데 사용할 수 있습니다. EditorConfig 파일과 규칙 집합을 모두 사용하면 규칙을 사용하거나 사용하지 않도록 설정하고 해당 심각도를 설정할 수 있습니다.
그러나 Visual Studio 2019 버전 16.5 이상에서는 규칙 집합 파일이 EditorConfig 파일을 위해 더 이상 사용되지 않으며 .NET Core 및 .NET 5+ 프로젝트는 모든 규칙 집합 메뉴 명령을 지원하지 않습니다. 자세한 내용은 기존 규칙 집합 파일을 EditorConfig 파일로 변환을 참조하세요.
EditorConfig 파일은 규칙을 구성하는 추가 방법을 제공합니다.
- .NET 코드 품질 분석기의 경우 EditorConfig 파일을 사용하여 분석할 코드 유형을 정의할 수 있습니다.
- .NET 코드 스타일 분석기 및 .NET 코드 품질 분석기의 경우 EditorConfig 파일을 사용하여 코드베이스 에 대한 기본 코드 스타일을 정의 할 수 있습니다.
규칙 집합 및 EditorConfig 파일 외에도 일부 분석기는 C# 및 VB 컴파일러에 대한 추가 파일 로 표시된 텍스트 파일을 사용하여 구성됩니다.
비고
- EditorConfig 파일은 Visual Studio 2019 버전 16.3 이상에서 규칙을 사용하도록 설정하고 심각도를 설정하는 데만 사용할 수 있습니다.
- EditorConfig 파일은 레거시 분석을 구성하는 데 사용할 수 없는 반면 규칙 집합은 사용할 수 있습니다.
CI(연속 통합) 빌드의 코드 분석
.NET 컴파일러 플랫폼 기반 코드 분석은 CI(연속 통합) 빌드에서 작동하나요?
예. .NET SDK 5.0 이상 또는 NuGet 패키지에서 설치된 분석기의 경우 이러한 규칙은 CI 빌드 중을 포함하여 빌드 시 적용됩니다. CI 빌드에 사용되는 분석기는 규칙 집합 및 EditorConfig 파일의 규칙 구성을 존중합니다. .NET 5.0부터 Visual Studio에 기본 제공되는 코드 스타일 분석기도 .NET SDK에 포함되며 대부분 CI 빌드에서 적용할 수 있습니다. 자세한 내용은 빌드 시 사용을 참조하세요.
IDE 분석기 및 StyleCop 비교
Visual Studio IDE 코드 분석기와 StyleCop 분석기의 차이점은 무엇인가요?
Visual Studio IDE에는 코드 스타일 및 품질 문제를 모두 찾는 기본 제공 분석기가 포함되어 있습니다. 이러한 규칙은 새로운 언어 기능이 도입될 때 사용하고 코드의 유지 관리 가능성을 개선하는 데 도움이 됩니다. IDE 분석기는 각 Visual Studio 릴리스에서 지속적으로 업데이트됩니다.
StyleCop 분석기는 코드에서 스타일 일관성을 확인하는 NuGet 패키지로 설치된 타사 분석기입니다. 일반적으로 StyleCop 규칙을 사용하면 한 스타일을 다른 스타일보다 권장하지 않고도 코드 베이스에 대한 개인 기본 설정을 지정할 수 있습니다.
코드 분석기 및 레거시 분석
레거시 분석과 .NET 컴파일러 플랫폼 기반 코드 분석의 차이점은 무엇인가요?
.NET 컴파일러 플랫폼 기반 코드 분석은 실시간 및 컴파일 중에 소스 코드를 분석하는 반면 레거시 분석은 빌드가 완료된 후 이진 파일을 분석합니다. 자세한 내용은 .NET 컴파일러 플랫폼 기반 분석 및 레거시 분석을 참조하세요.
FxCop 분석기 및 .NET 분석기
FxCop 분석기와 .NET 분석기의 차이점은 무엇인가요?
FxCop 분석기와 .NET 분석기는 모두 FxCop CA 규칙의 .NET 컴파일러 플랫폼("Roslyn") 분석기 구현을 나타냅니다. Visual Studio 2019 16.8 및 .NET 5.0 이전에는 이러한 분석기가 NuGet 패키지로 Microsoft.CodeAnalysis.FxCopAnalyzers
제공되었습니다. Visual Studio 2019 16.8 및 .NET 5.0부터 이러한 분석기는 .NET SDK에 포함됩니다.
NuGet 패키지로 Microsoft.CodeAnalysis.NetAnalyzers
도 사용할 수 있습니다.
FxCop 분석기에서 .NET 분석기로 마이그레이션하는 것이 좋습니다.
경고를 오류로 처리
내 프로젝트는 빌드 옵션을 사용하여 경고를 오류로 처리합니다. 레거시 분석에서 소스 코드 분석으로 마이그레이션한 후 모든 코드 분석 경고가 오류로 표시됩니다. 어떻게 방지할 수 있나요?
코드 분석 경고가 오류로 처리되지 않도록 하려면 다음 단계를 수행합니다.
다음 콘텐츠를 사용하여 .props 파일을 만듭니다.
<Project> <PropertyGroup> <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors> </PropertyGroup> </Project>
.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')" /> ...
코드 분석 솔루션 속성 페이지
솔루션의 코드 분석 속성 페이지는 어디에 있나요?
보다 신뢰할 수 있는 공유 속성 그룹을 위해 솔루션 수준의 코드 분석 속성 페이지가 제거되었습니다. 프로젝트 수준에서 코드 분석을 관리하기 위해 코드 분석 속성 페이지를 계속 사용할 수 있습니다. (관리되는 프로젝트의 경우 규칙 구성을 위해 규칙 집합에서 EditorConfig로 마이그레이션하는 것이 좋습니다.) 솔루션 또는 리포지토리의 여러/모든 프로젝트에서 규칙 집합을 공유하려면 공유 props/targets 파일 또는 Directory.props/Directory.targets 파일에서 CodeAnalysisRuleSet 속성을 사용하여 속성 그룹을 정의하는 것이 좋습니다. 모든 프로젝트에서 가져오는 일반적인 소품이나 대상이 없는 경우 디렉터리 또는 하위 디렉터리에 정의된 모든 프로젝트 파일에서 자동으로 가져오는 최상위 솔루션 디렉터리의 Directory.props 또는 Directory.targets 파일에 이러한 속성 그룹을 추가하는 것이 좋습니다.