Visual Studio Common 매크로 때문에 발생하는 오류
C# 분석기에서 $(SolutionDir)과 같은 공용 매크로 값을 알수 없어서 오류가 발생합니다. 이런 매크로는 해당 솔루션에서만 유효합니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Reference Include="CaseLibrary">
<HintPath>$(SolutionDir)CaseLibrary.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
분석기에서 dll을 참조하지 못해 아래와 같은 오류가 발생할 수 있습니다.
Visual Studio 버전 문제
C# 분석기는 자동으로 최신 분석기를 찾아 분석을 진행합니다.원본 Visual Studio와 버전이 맞지 않으면 컴파일 오류가 발생할 수 있습니다.
Configration, Flatform 설정이 맞지 않는 경우
csproj 파일에 Configuration과 Platform에 따라 산출문 경로가 다르고 Obj가 생성되는 경로가 달라 참조 오류가 발생
<aside> 💡 NetAnalyzer.ini의 항목을 아래와 같이 수정하면 해결할 수 있습니다.
=== 기본 ===
[VERSION] VS_VERSION=Latest
[PROPERTY] PREBUILD_PROPERTY= ANALYSIS_PROPERTY=
[COMPILATION] CONFIGURATION=Release PLATFORM=AnyCPU
[ANALYSIS] OPEN_SOLUTION=Y NEED_PREBUILD=N
[REPORT] REPORT_ALL=N
=== 수정 예시 === [VERSION] VS_VERSION=2017 /* 분석하려는 Visual Studio 버전을 지정합니다. ex) 2017, 2019, 2022, … */
[PROPERTY] PREBUILD_PROPERTY=OutPath;..\..\bin\ /* 빌드에 필요한 property를 추가 합니다. ex) OutPath, ProjectDir, … / ANALYSIS_PROPERTY=SolutionDir;D:\path\ / 분석에 필요한 property를 추가 합니다. ex) OutPath, ProjectDir, … */
[COMPILATION] CONFIGURATION=Debug /* 분석의 cofigruration 지정 / PLATFORM=x64 / 분석 플랫폼 지정
[ANALYSIS] OPEN_SOLUTION=N /* 솔루션 전체를 열어 분석할지 지정 / NEED_PREBUILD=Y /* 분석기 수행전에 msbuild 수행 */
[REPORT] REPORT_ALL=Y /* 심각도가 매우 낮음, 기타인 결함도 출력 */
NetAnalyzer.ini는 실행되는 경로에 함께 있으면 우선적으로 이 경로를 찾고, 분석 대상 솔루션 파일이 있는 폴더에 복사에서 작성하면 해당하는 ini 파일을 읽어 설정을 적용합니다.
</aside>
아래와 같은 로그가 확인 되는 경우
[INFO ] [NetAnalyzerExecutor] [DEBUG] Set timeout as 180000 milliseconds
[INFO ] [NetAnalyzerExecutor] [INFO] [1/2] FTFIEE.Infrastructure
[INFO ] [NetAnalyzerExecutor] [DEBUG] Calculating for 68 files...
[INFO ] [NetAnalyzerExecutor] [DEBUG] The thread aborted.
[INFO ] [NetAnalyzerExecutor] [DEBUG] Thread was being aborted.
[INFO ] [NetAnalyzerExecutor] [WARNING] Timeout occurred : FTFIEE.Infrastructure
해당 프로젝트의 LOC가 0
해당 프로젝트의 file 메트릭이 누락
메트릭이 누락된 파일이 정상적으로 분석 된 경우
[INFO ] [NetAnalyzerExecutor] [INFO] open project: D:\\Pixoneer_Projects\\425_Project\\IEE_Source\\Backend\\425_IEE.Infrastructure\\FTFIEE.Infrastructure.csproj
[INFO ] [NetAnalyzerExecutor] [INFO] Analyze cs file: D:\\Pixoneer_Projects\\425_Project\\IEE_Source\\Backend\\425_IEE.Infrastructure\\Extensions.DbContext.cs
[INFO ] [NetAnalyzerExecutor] [INFO] Analyze cs file: D:\\Pixoneer_Projects\\425_Project\\IEE_Source\\Backend\\425_IEE.Infrastructure\\GlobalUsings.cs
[INFO ] [NetAnalyzerExecutor] [INFO] Analyze cs file: D:\\Pixoneer_Projects\\425_Project\\IEE_Source\\Backend\\425_IEE.Infrastructure\\Persistence\\GS425IeeDBContext.cs
[INFO ] [NetAnalyzerExecutor] [INFO] Analyze cs file: D:\\Pixoneer_Projects\\425_Project\\IEE_Source\\Backend\\425_IEE.Infrastructure\\Persistence\\IEETERRAINDBContext.cs
[INFO ] [NetAnalyzerExecutor] [INFO] Analyze cs file: D:\\Pixoneer_Projects\\425_Project\\IEE_Source\\Backend\\425_IEE.Infrastructure\\Persistence\\IRE\\GS425IREContext.cs
원인: 아래 이슈 때문에 메트릭 분석 시간이 제한되어 발생
해결 방법
고객지원 이슈
https://suresofttech.atlassian.net/browse/STCS-2875