다음을 통해 공유


코드 검사 문제 해결

적용 대상: Visual Studio

Visual Studio의 코드 검사 분석 도구는 네이티브 및 관리되는 어셈블리(.dll 또는 .exe 파일)에 대한 데이터를 수집합니다. 그러나 경우에 따라 코드 검사 결과 창에 "생성된 빈 결과: ...."에 유사한 오류가 표시됩니다. 이 문서는 빈 결과가 발생할 수 있는 다양한 이유를 문제 해결 및 resolve 데 도움이 됩니다.

당신은 무엇을 볼 수 있습니까?

테스트 메뉴에서 코드 검사 분석 명령을 선택하고 빌드 및 테스트가 성공적으로 실행되면 코드 검사 창에 결과 목록이 표시됩니다. 세부 정보를 보려면 항목을 확장해야 할 수 있습니다.

색이 지정된 코드 검사 결과를 보여 주는 스크린샷

자세한 내용은 코드 검사 사용을 참조하여 테스트 중인 코드의 양을 확인합니다.

결과 또는 이전 결과가 표시되지 않는 가능한 이유

올바른 버전의 Visual Studio를 사용하고 있지 않습니다.

Visual Studio Enterprise 필요합니다.

테스트가 실행되지 않았습니다.

분석

출력 창을 확인합니다. 출력 표시 드롭다운 목록에서 테스트를 선택합니다. 기록된 경고 또는 오류가 있는지 확인합니다.

설명

테스트가 실행되는 동안 코드 검사 분석이 수행됩니다. 테스트가 실행될 때 메모리에 로드되는 어셈블리만 포함됩니다. 테스트가 실행되지 않으면 코드 검사에서 보고할 내용이 없습니다.

해결 방법

테스트 Explorer 모두 실행을 선택하여 테스트가 성공적으로 실행되었는지 확인합니다. 코드 검사 분석을 사용하기 전에 오류를 수정합니다.

이전 결과를 보고 있습니다.

테스트를 수정하고 다시 실행하면 이전 실행의 코드 색 지정을 포함하여 이전 코드 검사 결과가 계속 표시될 수 있습니다. 다음 단계에 따라 문제를 해결합니다.

  1. 코드 검사 분석을 실행합니다.
  2. 코드 검사 결과 창에서 가장 최근 결과 집합을 선택했는지 확인합니다.

.pdb(기호) 파일을 사용할 수 없음

분석

컴파일 대상 폴더(일반적으로 bin\debug)를 열고 각 어셈블리에 대해.dll 또는 .exe 파일과 동일한 디렉터리에 .pdb 파일이 있는지 확인합니다.

설명

코드 검사 엔진을 사용하려면 테스트 실행 중에 모든 어셈블리에 연결된 .pdb 파일에 액세스할 수 있어야 합니다. 특정 어셈블리에 대한 .pdb 파일이 없으면 어셈블리가 분석되지 않습니다.

.pdb 파일은 .dll 또는 .exe 파일과 동일한 빌드에서 생성되어야 합니다.

해결 방법

빌드 설정에서 .pdb 파일을 생성해야 합니다.

  • 프로젝트를 빌드할 때 .pdb 파일이 업데이트되지 않으면 프로젝트 속성을 열고 빌드 페이지를 선택하고 고급을 선택하고 디버그 정보를 검사합니다.

  • Visual Studio 2022 이상 버전에서 .NET Core 또는 .NET 5 이상을 대상으로 하는 C# 프로젝트의 경우 프로젝트 속성을 열고 빌드 탭을 선택하고 일반을 선택하고 디버그 기호를 검사합니다.

  • C++ 프로젝트의 경우 생성된 .pdb 파일에 전체 디버그 정보가 있는지 확인합니다. 프로젝트 속성을 열고 링커>디버깅>디버그 정보 생성공유 및 게시에 최적화된 디버그 정보 생성(/DEBUG:FULL)으로 설정되어 있는지 확인합니다.

.pdb.dll 또는 .exe 파일이 다른 위치에 있는 경우 .pdb 파일을 동일한 디렉터리에 복사합니다. 다른 위치에서 .pdb 파일을 검색하도록 코드 검사 엔진을 구성할 수도 있습니다. 자세한 내용은 코드 검사 분석 사용자 지정을 참조하세요.

계측 또는 최적화된 이진 파일이 사용됩니다.

분석

이진 파일이 프로필 기반 최적화와 같은 고급 최적화를 수행했거나 프로파일링 도구(예: vsinstr.exe 또는 vsperfmon.exe)에서 계측되었는지 확인합니다.

설명

어셈블리가 이미 다른 프로파일링 도구에 의해 계측되거나 최적화된 경우 코드 검사 분석에서 어셈블리가 생략됩니다. 이러한 어셈블리에서는 코드 검사 분석을 수행할 수 없습니다.

해결 방법

최적화를 끄고 새 빌드를 사용합니다.

코드가 관리되지 않음(.NET) 또는 네이티브(C++) 코드

분석

관리되는 코드 또는 C++ 코드에서 일부 테스트를 실행하고 있는지 확인합니다.

설명

Visual Studio의 코드 검사 분석은 관리 코드와 네이티브(C++) 코드에서만 사용할 수 있습니다. 타사 도구를 사용하는 경우 코드의 일부 또는 전부가 다른 플랫폼에서 실행될 수 있습니다.

해결 방법

사용할 수 없습니다.

프로젝트 이름에는 'DataCollector'가 포함됩니다.

프로젝트 이름에 DataCollector를 사용하는 프로젝트는 코드 검사로 식별되지 않습니다.

NGen에서 어셈블리를 설치했습니다.

분석

어셈블리가 네이티브 이미지 캐시에서 로드되는지 확인합니다.

설명

성능상의 이유로 네이티브 이미지 어셈블리는 분석되지 않습니다. 자세한 내용은 Ngen.exe(네이티브 이미지 생성기)를 참조하세요.

해결 방법

어셈블리의 MSIL 버전을 사용합니다. NGen을 사용하여 처리하지 마세요.

사용자 지정 .runsettings 파일에 구문 문제가 있습니다.

분석

사용자 지정 .runsettings 파일을 사용하는 경우 구문 오류가 포함될 수 있습니다. 코드 검사가 실행되지 않고 테스트 실행이 끝날 때 코드 검사 창이 열리지 않거나 이전 결과가 표시됩니다.

설명

사용자 지정 .runsettings 파일을 사용하여 단위 테스트를 실행하여 코드 검사 옵션을 구성할 수 있습니다. 옵션을 사용하면 파일을 포함하거나 제외할 수 있습니다. 자세한 내용은 코드 검사 분석 사용자 지정을 참조하세요.

해결 방법

다음과 같은 두 가지 유형의 오류가 발생할 수 있습니다.

  • XML 오류

    Visual Studio XML 편집기에서 .runsettings 파일을 엽니다. 오류 표시를 찾습니다.

  • 정규식 오류

    파일의 각 문자열은 정규식입니다. 각 오류를 검토하고 특히 다음을 찾습니다.

    • 일치하지 않는 괄호(...) 또는 이스케이프되지 않은 괄호 \(...\). 검색 문자열의 괄호와 일치하려면 이스케이프해야 합니다. 예를 들어 함수와 일치하려면 다음을 사용합니다. .*MyFunction\(double\)
    • 식 시작 시 별표 또는 더하기 모든 문자 문자열과 일치하려면 점 뒤에 별표 를 사용합니다. .*

잘못된 제외가 있는 사용자 지정 .runsettings 파일

분석

사용자 지정 .runsettings 파일을 사용하는 경우 어셈블리가 포함되어 있는지 확인합니다.

설명

사용자 지정 .runsettings 파일을 사용하여 단위 테스트를 실행하여 코드 검사 옵션을 구성할 수 있습니다. 옵션을 사용하면 파일을 포함하거나 제외할 수 있습니다. 자세한 내용은 코드 검사 분석 사용자 지정을 참조하세요.

해결 방법

.runsettings 파일에서 모든 Include 노드를 제거한 다음 모든 노드를 Exclude 제거합니다. 문제가 해결되면 다시 스테이지에 배치합니다.

DataCollectors 노드가 코드 검사를 지정하는지 확인합니다. 코드 검사 분석 사용자 지정의 샘플과 비교합니다.

일부 코드는 항상 다루지 않는 것으로 표시됩니다.

네이티브 DLL의 초기화 코드는 계측 전에 실행됩니다.

분석

정적으로 연결된 네이티브 코드에서는 코드가 실행된 경우에도 초기화 함수 DllMain 및 호출하는 코드의 일부가 다루지 않는 것으로 표시되는 경우가 있습니다.

설명

코드 검사 도구는 애플리케이션 실행을 시작하기 직전에 어셈블리에 계측을 삽입하여 작동합니다. 미리 로드된 어셈블리에서 DllMain 의 초기화 코드는 어셈블리가 로드되는 즉시 애플리케이션이 실행되기 전에 실행됩니다. 이 코드는 일반적으로 정적으로 로드된 어셈블리에 적용되는 다루지 않는 것처럼 보입니다.

해결 방법

없음

참조