피드로 돌아가기
Dev.toDevOps
원문 읽기
Libclang C API 기반의 고정밀 Include-What-You-Use 정적 분석 도구 구현
include-tidy: A Tool to Enforce Include-What-You-Use
AI 요약
Context
C/C++ 언어의 명시적 모듈 포함 강제 기제 부재로 인한 빌드 시간 증가 및 플랫폼 간 빌드 파편화 발생. 기존 도구인 IWYU의 불안정한 LLVM API 의존성과 느린 업데이트 주기, 그리고 구현 세부 사항을 노출하는 잘못된 헤더 추천 방식의 한계 노출.
Technical Solution
- Libclang C API 채택을 통한 Stable API 확보 및 C++ 파서 구현 복잡도 해결
- 표준 헤더를 Proxy로 설정하여 내부 구현 헤더로의 직접 참조를 방지하는 매핑 로직 설계
- TOML 기반의 외부 설정 파일 구조를 도입하여 소스 코드 내 특수 주석 의존성 제거
__include_tidy__매크로 정의를 통한 전처리기##연산자 기반 심볼 인식 공백 해결- 더미 코드 삽입 방식을 통한 Libclang AST 분석 한계 극복 및 심볼 참조 무결성 확보
실천 포인트
- AST 분석 도구 설계 시 unstable API 대신 stable C Wrapper API 검토 - 전처리기 매크로 확장을 통한 심볼 생성 시 정적 분석기가 인식 가능한 더미 참조 경로 확보 - 라이브러리 구현 세부 사항(Implementation Detail)을 감추기 위한 Proxy 헤더 전략 적용 - 설정 파일 포맷 선정 시 가독성과 파싱 편의성을 고려한 TOML 도입 검토