Apple, 소스 코드 변환을 위한 SSAF 드라이버를 LLVM Clang에 기여
요약
Apple이 소스 코드 전체 변환을 수행하고 그 결과를 빌드 과정에 통합하는 `clang-ssaf-driver`를 LLVM Clang에 기여했습니다. 이 드라이버는 프로젝트 전반의 소스 변환을 실행하며, 변환 보고서와 자동 생성된 패치까지 제공합니다. 이는 범용적인 분석 및 변환 기능을 목표로 합니다.
핵심 포인트
- 프로젝트 전체에서 소스 코드 변환을 수행하는 도구입니다.
- 변환 결과는 보고서(SARIF)와 적용 가능한 패치 형태로 제공됩니다.
- 특정 사양에 구애받지 않는 범용적인 분석 및 변환 드라이버를 구축합니다.
Apple이 소스 코드 변환을 위해 LLVM Clang에 SSAF 드라이버를 기여했습니다.

오늘 LLVM Git으로 clang-ssaf-driver가 올라왔습니다. 이 드라이버는 프로젝트 전체에서 소스 변환을 수행하고, 빌드와 동시에 그 결과를 제시합니다. 또한 변환 보고서 외에 자동 생성된 소스 변환에 대한 패치도 생성할 수 있습니다.
Clang SSAF는 추가적인 변환 규칙을 추가할 수 있으며, 첫 번째 예시 중 하나는 다음과 같습니다:
cpp-bounded-buffers: C++의 경계(bounds)가 필요한 원시 포인터와 배열을 bounded_ptr 및 bounded_array를 사용하도록 재작성합니다.
Apple의 Jan Korous는 병합된 풀 리퀘스트에서 다음과 같이 설명했습니다:
"빌드 과정에서 프로젝트 전체에 소스 변환을 실행하고 그 결과를 제시하는 도구를 추가합니다. 이 도구는 각 변환이 어떤 요약(summaries)과 어떤 전체 프로그램 분석(whole-program analysis)이 필요한지 알고 있으므로, 사용자는 변환 이름과 빌드 명령어만 지정하면 됩니다. cpp-bounded-buffers가 첫 번째입니다. 이는 clang-ssaf-orchestrator-make를 통해 make로 빌드된 프로젝트를 구동합니다.
이 드라이버는 링크 유닛의 소스 편집 내용을 패치로 작성하고, 컴파일러가 진단(diagnostics)을 출력하는 방식처럼 변환 보고서를 인쇄하며 SARIF 형식으로도 작성합니다. 병합은 오직 자체 입력 간의 충돌만을 해결하므로, 보고된 충돌과 겹치는 수정 사항은 패치에서 제외됩니다. --apply 옵션을 사용하면 드라이버는 빌드 전에 찾고, 소스가 패치가 보여주는 대로 끝나는지 확인하는 clang-apply-replacements를 사용하여 편집 내용도 적용합니다.
이것은 우리가 이전에 제안했던 도구인 clang-reforge의 일반화 버전입니다. 우리는 특정 사양에 구애받지 않는 범용 분석 및 변환 드라이버를 구축하기를 원합니다."
다음 봄 출시될 LLVM 24에서 clang-ssaf-driver를 찾아보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기