켈 [Rupta 문서]가 개발 중입니다.
이 오픈 소스 프레임 워크 인 Rupta는 Rust Mir에서 작동하는 Rust의 포인터/별명 분석을 지원합니다. 현재 CC'24 논문 (https://dl.acm.org/doi/10.1145/3640537.3641574)에 자세히 설명 된대로 캘리 타이트 기반 포인터 분석을 제공합니다.
저장소를 복제하십시오
빌드 및 설치
두 가지 방법으로 Rupta를 구축 할 수 있습니다.
$ cargo build 이 명령은 target/debug 디렉토리에서 두 개의 바이너리 인 cargo-pta 및 pta 생성합니다.
Rupta를 cargo 에 설치할 수도 있습니다.
$ cargo --locked install --path . 이를 통해 cargo fmt 와 같은 다른 cargo 명령과 유사한 Command cargo pta 사용하여 Rust 프로젝트에서 포인터 분석을 수행 할 수 있습니다.
바이너리 cargo-pta 사용하여 RUPTA를 위해 Rupta를 실행할 수 있습니다.
$ cargo-pta pta -- --entry < entry-function-name > --pta-type < pta-type > --context-depth < N > --dump-call-graph < call-graph-path > --dump-pts < pts-path > Rupta가 cargo 에 설치된 경우 cargo-pta pta 대신 Comment cargo pta PTA를 사용할 수도 있습니다.
또는 바이너리 pta 사용하여 단일 파일 에 대해 Rupta를 실행할 수 있습니다.
$ pta < path-to-file > --entry-func < entry-function-name > --pta-type < pta-type > --context-depth < N > --dump-call-graph < call-graph-path > --dump-pts < pts-path >옵션 :
<entry-function-name> : 입력 함수를 지정합니다. 기본값은 main() 입니다.<pta-type> : 포인터 분석 유형을 결정합니다. 옵션은 cs (Callite-Ensentitive) 또는 ander (Andersen)이며 cs 는 기본값입니다.context-depth : 캘리포니아 민감성 분석에서 컨텍스트의 깊이를 설정합니다. 기본값은 1입니다.dump-call-graph : 호출 그래프를 도트 형식으로 출력합니다.dump-pts : 포인트-투-투어 분석 결과를 출력합니다.dump-mir : 모든 도달 가능한 기능에 대해 mir을 출력합니다.참고 : Rupta는 대규모 녹 Rust 프로젝트를 분석하기 위해 상당한 계산 및 메모리 리소스가 필요합니다. 분석 중에 Main ()에서 도달 할 수있는 많은 기능으로 인해 너무 긴 분석 시간이 발생하면 추가 메모리 (예 : 128GB) 및 빠른 CPU가 장착 된보다 강력한 컴퓨팅 플랫폼으로 업그레이드됩니다.
로깅을 활성화하려면 PTA_LOG 환경 변수를 설정하십시오.
$ export PTA_LOG=info librustc_driver.so .와 같은 공유 라이브러리로드 오류가 발생하면 설정해보십시오.
$ export LD_LIBRARY_PATH= $( rustc --print sysroot ) /lib: $LD_LIBRARY_PATH 라이센스를 참조하십시오
우리는 더 넓은 연구 커뮤니티를 지원하고 현장의 발전을 촉진하기 위해 Rupta 소스 코드를 발표했습니다. 우리는 그것이 당신의 프로젝트에 귀중하기를 바랍니다. 우리의 도구를 활용하는 간행물이나 프레젠테이션에서 다음 논문을 인용하여 기여를 인정하십시오.
@inproceedings{li2024context,
title={A Context-Sensitive Pointer Analysis Framework for Rust and Its Application to Call Graph Construction},
author={Li, Wei and He, Dongjie and Gui, Yujiang and Chen, Wenguang and Xue, Jingling},
booktitle={Proceedings of the 33rd ACM SIGPLAN International Conference on Compiler Construction},
pages={60--72},
year={2024},
publisher={ACM},
doi = {10.1145/3640537.3641574}
}
모든 의견, 기부금 및 협력을 환영합니다. 궁금한 점이 있으면 저자 Wei Li 또는 Jingling Xue에게 문의하십시오.