언리얼 빌드 툴(Unreal Build Tool, UBT) 은 여러 스태틱 코드 분석 툴의 실행을 지원합니다. 스태틱 코드 분석 툴(Static Code Analyzer) 은 다양한 알고리즘과 기법을 사용하여 코드를 실행하지 않고도 소스 코드를 검사하고 버그를 찾아냅니다. 이를 통해 빠른 분석, 빠른 메모리 누수 및 로직 오류 탐지, 기술 부채 감소 등의 이점을 얻을 수 있습니다.
UBT로 스태틱 코드 분석 툴 사용하기
언리얼 엔진 루트 디렉터리에서 UBT로 스태틱 코드 분석 툴을 실행하기 위한 일반 명령줄 구문은 다음과 같습니다.
Engine\Build\BatchFiles\RunUBT.bat TARGET PLATFORM Development -StaticAnalyzer=ANALYZER
TARGET
, PLATFORM
, ANALYZER
는 위 명령의 필수 실행인자이며, 이를 원하는 값으로 대체해야 합니다.
TARGET
: UBT에서 지원되는 빌드 타깃입니다. 자세한 내용은 타깃에 대한 문서를 참조하세요.PLATFORM
: 언리얼 엔진에서 지원되는 플랫폼입니다. 일반 플랫폼 지원 페이지를 방문하여 언리얼 엔진 플랫폼 지원에 대해 더 자세히 알아보세요.ANALYZER
: UBT가 지정된 플랫폼에서 제공된 타깃을 분석하는 데 사용하는 스태틱 코드 분석 툴입니다. 사용 가능한 옵션을 보려면 아래의 지원되는 분석 툴 섹션을 참조하세요.
지원되는 분석 툴
분석 툴 | 설명 |
---|---|
디폴트 | 선택된 컴파일러(있는 경우)에 대한 디폴트 스태틱 분석 툴입니다. |
VisualCpp | 내장 Visual C++ 스태틱 분석 툴입니다. Microsoft Visual C++(MSVC) 기반 플랫폼에서만 지원됩니다. |
PVSStudio | PVS-Studio 스태틱 분석 툴입니다. MSVC 기반 플랫폼에서만 지원됩니다. PVS-Studio는 설치된 |
Clang | Clang 스태틱 분석 툴입니다. MSVC 기반 플랫폼의 컴파일러를 Clang으로 강제합니다. |
예시
언리얼 엔진 루트 디렉터리에서 다음 명령을 실행하여 언리얼 에디터의 디폴트 스태틱 코드 분석 툴을 Windows 64비트 플랫폼의 타깃으로 사용합니다.
Engine\Build\BatchFiles\RunUBT.bat UnrealEditor Win64 Development -StaticAnalyzer=Default
언리얼 엔진 루트 디렉터리에서 다음 명령을 실행하여 라이라 스타터 게임의 Visual C++ 스태틱 코드 분석 툴을 Windows 64비트 플랫폼의 타깃으로 사용합니다.
Engine\Build\BatchFiles\RunUBT.bat LyraGame Win64 Development -StaticAnalyzer=VisualCpp
Clang 분석 툴을 위한 명령줄 옵션
옵션 | 설명 |
---|---|
-StaticAnalyzerOutputType=html |
분석 경고를 설명하는 내비게이션을 포함하여 웹 페이지를 작성합니다. 이 HTML 파일은 선택된 플랫폼 및 타깃의 Engine/Intermediate/Build 디렉터리 내 알맞은 폴더에 작성됩니다. |
-StaticAnalyzerMode=shallow |
간단한 분석을 활성화합니다. 분석이 더 빠르게 완료되지만 표준 분석에 비해 정보가 적습니다. 일반적인 목적으로는 이 모드를 사용하지 않는 것이 좋습니다. |
-StaticAnalyzerChecker=CHECKER |
디폴트 목록 대신 활성화할 스태틱 분석 툴 체커의 목록을 제공합니다. |
-StaticAnalyzerDisableChecker=CHECKER |
스태틱 분석 툴 디폴트 체커를 비활성화합니다. 이 옵션은 디폴트 비활성화 체커 deadcode.DeadStores 와 security.FloatLoopCounter 를 오버라이드합니다. -StaticAnalyzerChecker 가 설정된 경우 이 옵션은 사용되지 않습니다. |
-StaticAnalyzerAdditionalChecker=CHECKER |
디폴트가 아닌 추가적인 스태틱 분석 툴 체커를 활성화합니다. -StaticAnalyzerChecker 가 설정된 경우 이 옵션은 사용되지 않습니다. |
Clang 분석 툴 체커의 전체 목록은 Clang 문서의 사용 가능한 체커를 참조하세요.