위키득계정 ↗
기술

Include What You Use

Include What You Use기술
약칭
IWYU
분류
헤더 의존 관계 분석
기반
Clang
주요 대상
C와 C플러스플러스
Include What You Use는 C와 C플러스플러스 코드가 사용하는 선언에 맞게 헤더 포함 관계를 점검하는 도구다. 다른 헤더가 우연히 전달해 주는 선언에 대한 의존을 줄이는 데 활용한다.

직접 사용하는 선언

어떤 파일이 타입이나 함수, 변수와 매크로를 사용한다면 해당 선언을 제공하는 헤더와의 관계가 중요하다. 다른 헤더를 통해 간접적으로 선언이 보이는 상태는 헤더 내부가 바뀔 때 깨질 수 있다. IWYU는 이 의존 관계를 명시적으로 정리하도록 돕는다.

제안과 수정 검토

분석 결과로 추가하거나 제거할 헤더를 판단할 수 있다. 그러나 프로젝트의 공개 헤더 정책과 플랫폼 조건, 매크로의 역할까지 함께 검토해야 한다. 헤더를 줄였다는 사실만으로 모든 구성에서 올바르게 빌드된다고 보장되지는 않는다.

컴파일러 버전 대응

Clang 내부 기능에 의존하므로 사용하는 Clang과 IWYU의 버전 관계를 확인해야 한다. 분석 시에도 실제 빌드의 인클루드 경로와 전처리 설정이 필요하다. 변경 뒤에는 지원하는 구성에서 빌드와 검사를 수행한다.

관련 문서

Clang / Clangd / Clang-Tidy / Bear 컴파일 데이터베이스