CoCoMUT: 코드 컨텍스트 마이닝 및 자동 데이터셋 생성을 위한 도구
요약
CoCoMUT은 소프트웨어 엔지니어링 어시스턴트 학습을 위해 메서드 수준의 컨텍스트를 자동으로 추출하고 데이터셋을 생성하는 Java 도구입니다. 정적 호출 그래프와 소스 추출 기술을 결합하여 재현 가능한 고품질의 코드 컨텍스트 데이터를 제공합니다.
핵심 포인트
- 메서드 단위의 클래스, 문서, 호출 관계 등 풍부한 컨텍스트 추출
- SootUp 및 Spoon을 활용한 정적 호출 그래프와 소스 일치 기술 적용
- Maven 및 Gradle 프로젝트를 지원하는 자동화된 데이터셋 생성 파이프라인
- 실제 Java 저장소 평가 결과 99%의 높은 컨텍스트 정확도 검증
소프트웨어 엔지니어링 어시스턴트(Software-engineering assistants)는 고립된 메서드 본문(body)을 넘어, 둘러싼 클래스 정보, 문서(documentation), 호출자(callers), 피호출자(callees), 타입 계층 구조(type hierarchy) 및 구조적 특성을 포함하는 메서드 수준의 컨텍스트(context)를 필요로 하는 경우가 많습니다. 이러한 컨텍스트를 수동으로 수집하는 것은 시간이 많이 소요되고, 일관성이 없으며, 대규모 Java 프로젝트 전반에 걸쳐 재현하기 어렵습니다. 본 논문에서는 코드 컨텍스트 마이닝(Code-Context Mining) 및 자동 데이터셋 생성을 위한 Java 도구인 CoCoMUT을 제시합니다. CoCoMUT은 특정 메서드(focal method)에 대한 컨텍스트를 추출하거나 클래스, 패키지 또는 시스템 범위에서 데이터셋을 생성합니다. 이 도구는 프로젝트 구조를 발견하고, 빌드(build) 및 클래스패스(classpath) 정보를 해결하며, SootUp 정적 호출 그래프(static call graph)를 구축하고, 바이트코드 수준의 호출 엣지(call edges)를 Spoon 기반 소스 추출과 일치(reconcile)시킵니다. 각 메서드 레코드는 소스, 클래스, 문서, 호출 그래프(call-graph) 및 메타데이터 컨텍스트를 결합하여, 학습된 소프트웨어 엔지니어링 기술을 훈련하고 실행하기 위한 재현 가능한 입력을 제공합니다. 핵심 기여는 빌드 발견, 소스 추출, 호출 그래프 구축, 소스-바이트코드 일치, 버전 관리된 JSON 데이터셋 생성을 통합하는 재사용 가능하고 작업 독립적인 파이프라인입니다. 결과물인 레코드는 특정 메서드에 대한 컨텍스트로서 개별적으로 소비되거나, 문서화, 설명, 테스트, 리뷰, 수정(repair), 검색 및 프로그램 이해(program-comprehension) 워크플로우를 위한 데이터셋으로서 집합적으로 소비될 수 있습니다. 우리는 Maven과 Gradle으로 균등하게 나뉜 20개의 실제 Java 저장소(repositories)에서 CoCoMUT을 평가했습니다. CoCoMUT은 20개의 저장소를 모두 처리하여 56,512개의 메서드 컨텍스트 레코드와 386,048개의 직렬화된 호출 엣지를 생성했습니다. 바이트코드 대상이 프로젝트 소스에 속하는 호출 엣지 중에서, CoCoMUT은 97.8%를 소스 메서드 식별자와 일치시켰습니다. 10개 시스템에 걸쳐 무작위로 샘플링된 200개 메서드에 대한 수동 감사 결과, 생성된 컨텍스트 레코드의 99.0%가 모든 적용 가능한 정확성 검사를 통과했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기