레거시 FxCop 및 .NET 분석기에 관한 자주 묻는 질문

레거시 FxCop(이진 분석)와 .NET 분석기(소스 분석) 간 차이점을 이해하는 것은 약간 혼동이 될 수 있습니다. 이 문서에서는 사용자가 가질 수 있는 일부 질문을 해결하려고 합니다.

레거시 FxCop 및 .NET 분석기 간 차이점은 무엇인가요?

레거시 FxCop는 컴파일된 어셈블리에서 빌드 후 분석을 실행합니다. FxCopCmd.exe라는 별도 실행 파일로 실행됩니다. FxCopCmd.exe는 컴파일된 어셈블리를 로드하고, 코드 분석을 실행한 다음, 결과(또는 진단)를 보고합니다.

.NET 분석기는 .NET Compiler Platform(“Roslyn”)을 기반으로 합니다. 분석기는 프로젝트 또는 솔루션에서 참조되는 NuGet 패키지로 설치하거나 .NET SDK에서 사용하도록 설정합니다. 분석기는 컴파일러를 실행하는 동안 소스 코드 기반 분석을 실행합니다. 분석기는 csc.exe 또는 vbc.exe의 컴파일러 프로세스 내에서 호스트되며 프로젝트가 빌드될 때 분석을 실행합니다. 분석기 결과는 컴파일러 결과와 함께 보고됩니다.

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 분석기로 마이그레이션을 고려하세요.

Code Analysis 실행 명령은 .NET 분석기를 실행하나요?

Visual Studio 2019 16.5 릴리스 이전에는 분석>Code Analysis 실행을 선택하면 레거시 분석이 실행됩니다. Visual Studio 2019 16.5부터 코드 분석 실행 메뉴 옵션은 선택한 프로젝트 또는 솔루션에 대한 Roslyn 기반 분석기를 실행합니다. .NET 분석기를 설치한 경우 해당 분석기도 실행됩니다. 자세한 내용은 방법: 관리 코드에 대해 수동으로 Code Analysis 실행을 참조하세요.

RunCodeAnalysis msbuild 프로젝트 속성은 분석기를 실행하나요?

아니요. 프로젝트 파일에서 RunCodeAnalysis 속성(예: .csproj)은 레거시 FxCop 실행에만 사용됩니다. FxCopCmd.exe를 호출하는 빌드 후 msbuild 작업을 실행합니다.

그러면 .NET 분석기를 어떻게 실행할까요?

.NET 분석기를 실행하려면 먼저 .NET SDK에서 사용하도록 설정하거나 NuGet 패키지로 설치합니다. 그런 다음, Visual Studio에서 또는 msbuild를 사용하여 프로젝트 또는 솔루션을 빌드합니다. Roslyn 분석기가 생성하는 경고와 오류는 오류 목록 또는 명령 창에 표시됩니다.

.NET 분석기 NuGet 패키지를 설치한 후에도 경고 CA0507이 표시됨

.NET 분석기를 설치했지만 경고 CA0507 ““Code Analysis 실행”이 더 이상 사용되지 않고 대신 FxCop 분석기가 빌드 중 실행됩니다.”가 계속 표시되는 경우에는 프로젝트 파일에서 RunCodeAnalysis msbuild 속성을 false로 설정해야 할 수 있습니다. 이렇게 설정하지 않으면 각 빌드 후에 레거시 분석이 실행됩니다.

<RunCodeAnalysis>false</RunCodeAnalysis>

.NET 분석기로 이동된 규칙은 무엇인가요?

.NET 분석기로 이동된 레거시 분석 규칙에 관한 내용은 Fxcop 규칙 이동 상태를 참조하세요.

코드 분석 경고는 오류로 처리됩니다.

프로젝트에서 빌드 옵션을 사용하여 경고를 오류로 처리하는 경우 분석기 경고가 오류로 나타날 수 있습니다. 코드 분석 경고가 오류로 처리되지 않도록 하려면 코드 분석 FAQ의 단계를 따릅니다.

참조