구조 인식 기반 C‑to‑Rust 자동 변환 프레임워크 C2RustXW
C2RustXW는 정적 프로그램 분석으로 추출한 전역 심볼, 함수 의존성, 제어·데이터 흐름 정보를 구조화 텍스트로 변환해 LLM 프롬프트에 삽입함으로써, 의존성‑aware 번역과 다단계 규칙·LLM 기반 수정을 결합한다. 실험 결과, CodeNet에서 100% 구문 정확도, GitHub에서 97.78%를 달성했으며, 코드 크기는 최대 43.70% 감소, unsafe 사용량은 5.75% 수준으로 크게 줄였다. 프로젝트 수준에서도 구문 정확도 1…
저자: Yanyan Yan, Yang Feng, Jiangshan Liu
본 논문은 레거시 C 코드베이스를 Rust로 마이그레이션할 때 발생하는 ‘비 idiomatic’, ‘unsafe 과다 사용’, ‘코드 부피 증가’ 등의 문제를 해결하고자, 프로그램 구조를 명시적으로 인식하는 새로운 번역 프레임워크 C2RustXW를 제안한다. C2RustXW는 크게 세 단계로 구성된다.
1) **구조 추출 및 표현** 단계에서는 Clang/LLVM 파서를 이용해 C 프로그램을 AST로 변환하고, 전역 심볼(변수, 구조체, 열거형, 함수 시그니처) 집합 Σ, 함수 정의와 본문 F, 함수 호출·심볼 사용 관계를 포함한 의존성 그래프 D, 그리고 제어 흐름(CFG)과 데이터 흐름(DDG) 그래프 G를 추출한다. 각 요소는 사전 정의된 텍스트 포맷(예: “symbol: type”, “call: funcA → funcB”, “CFG: B1→B2”)으로 직렬화되어 LLM 프롬프트에 삽입될 준비가 된다.
2) **번역 및 구문 수정** 단계에서는 의존성 그래프 D를 위상 정렬하여 호출 관계가 선행되는 함수부터 순차적으로 번역한다. 이때 LLM에게는 해당 함수의 인터페이스와 함께, 현재까지 번역된 전역 심볼 Σ, 함수 의존 목록, 그리고 해당 함수의 CFG·DDG 요약을 제공한다. LLM은 이러한 구조 정보를 활용해 타입 일관성을 유지하고, 불필요한 unsafe 블록을 최소화한 Rust 코드를 생성한다. 구문 오류가 발견되면, 먼저 규칙 기반 파서가 간단한 선언 누락·매크로 전처리 오류를 자동 교정하고, 남은 복합 오류는 구조‑가이드 프롬프트를 재사용해 LLM이 문맥을 재해석하도록 한다.
3) **의미 검증 및 의미 수정** 단계에서는 차등 테스트를 수행한다. 동일 입력을 C와 변환된 Rust 프로그램에 적용하고, 실행 시점 변수값을 수집한다. 런타임 상태(예: “x=5, y=10”)와 데이터 흐름 체인을 구조‑가이드 프롬프트에 포함시켜 LLM에게 “이 부분에서 행동이 다릅니다”라는 피드백을 제공한다. LLM은 해당 함수·아이템을 재생성하거나, unsafe 블록을 안전한 Rust 패턴(예: slice, Option)으로 교체한다. 이러한 반복적 피드백 루프는 의미 정확도를 점진적으로 향상시킨다.
실험에서는 두 가지 벤치마크를 사용했다. 첫 번째는 교육용 문제 풀이 사이트 CodeNet(수천 개 파일)이며, 두 번째는 GitHub에서 수집한 실제 오픈소스 C 프로젝트다. 파일 수준 평가에서 C2RustXW는 CodeNet에서 100% 구문 정확도, GitHub에서는 97.78%를 달성했다. 코드 크기 감소율은 최대 43.70%이며, unsafe 사용 비율은 평균 5.75%로 기존 C2Rust(>90% unsafe) 대비 크게 개선되었다. 프로젝트 수준에서는 전체 파일을 일관되게 번역·수정함으로써 구문 정확도 100%, 의미 정확도 평균 78.87%를 기록했다.
본 연구의 주요 기여는 다음과 같다. (1) 전역 심볼, 함수 의존성, 제어·데이터 흐름을 포함한 다층 프로그램 구조를 명시적으로 모델링하고 이를 LLM 프롬프트에 통합한 번역 프레임워크 제시. (2) 구조‑가이드 프롬프트를 활용한 다단계 구문·의미 수리 파이프라인 설계, 규칙 기반과 LLM 기반 수정을 효과적으로 결합. (3) 대규모 실험을 통해 구조‑인식과 LLM 결합이 레거시 C 코드의 안전하고 가독성 높은 Rust 변환에 실질적인 이점을 제공함을 입증. 향후 연구에서는 더 정교한 데이터 흐름 분석, 타입 추론 강화, 그리고 다양한 LLM 모델과의 비교를 통해 프레임워크를 확장할 계획이다.
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기