Skip to main content
QUICK REVIEW

[논문 리뷰] CoCoMIC: Code Completion By Jointly Modeling In-file and Cross-file Context

Yangruibo Ding, Zijian Wang|arXiv (Cornell University)|2022. 12. 20.
Software Engineering Research인용 수 10
한 줄 요약

CoCoMIC는 사전에 학습된 코드 언어 모델에서 파일 내 및 파일 간 맥락을 동시에 모델링하는 프레임워크를 제안한다. CCFinder를 사용해 임포트 기반 정적 분석을 통해 관련 파일 간 맥락을 검색하고, 연합 어텐션을 통해 통합함으로써, 파일 내 맥락 전용 기준 모델 대비 정확 일치에서 33.94%의 상대적 향상과 식별자 일치에서 28.69%의 상대적 향상을 달성한다.

ABSTRACT

While pre-trained language models (LM) for code have achieved great success in code completion, they generate code conditioned only on the contents within the file, i.e., in-file context, but ignore the rich semantics in other files within the same project, i.e., cross-file context, a critical source of information that is especially useful in modern modular software development. Such overlooking constrains code language models' capacity in code completion, leading to unexpected behaviors such as generating hallucinated class member functions or function calls with unexpected arguments. In this work, we develop a cross-file context finder tool, CCFINDER, that effectively locates and retrieves the most relevant cross-file context. We propose CoCoMIC, a framework that incorporates cross-file context to learn the in-file and cross-file context jointly on top of pretrained code LMs. CoCoMIC successfully improves the existing code LM with a 33.94% relative increase in exact match and a 28.69% relative increase in identifier matching for code completion when the cross-file context is provided.

연구 동기 및 목표

  • 사전에 학습된 코드 언어 모델(LM)이 파일 내 맥락에만 의존하고 프로젝트 전반의 종속성을 忽시하는 한계를 해결하기 위해.
  • 동일 프로젝트의 관련 파일 간 맥락을 통합함으로써 코드 완성 정확도를 향상시키기 위해, 이는 종종 정확한 코드 생성에 필수적이다.
  • 모델의 맥락 길이를 초과하지 않도록, 파일 간 맥락을 검색하고 통합하는 스케일러블하고 효율적인 방법을 개발하기 위해.
  • 파일 내 및 파일 간 맥락을 서로 다른 방식으로 처리하여, 그들이 지닌 상이한 의미적 역할을 존중하는 연합 모델링 프레임워크를 설계하기 위해.
  • 실제 세계의 코드 완성 벤치마크에서 파일 간 맥락 검색 및 통합의 효과를 경험적으로 검증하기 위해.

제안 방법

  • CCFinder는 소스 코드에서 프로젝트 맥락 그래프를 구축함으로써 엔티티(예: 클래스, 함수)와 그 관계를 포괄하는 정적 코드 분석 도구로 개발된다.
  • 코드 스니펫이 주어지면, CCFinder는 임포트 문장을 분석하고 프로젝트 맥락 그래프에서 인접한 엔티티를 검색함으로써 관련 파일 간 맥락을 식별한다.
  • CoCoMIC은 전용 인코더 모듈을 사용해 검색된 파일 간 맥락을 압축된 표현으로 변환한다.
  • 자기회귀적 생성 과정에서, CoCoMIC은 파일 내 맥락과 압축된 파일 간 맥락 양쪽에 주의를 기울이는 연합 어텐션 메커니즘을 활용한다.
  • 프레임워크는 기존의 사전에 학습된 코드 LMs(예: CodeGen) 위에 구축되며, 연합 맥락 모델링을 통해 종단 간 미세조정된다.
  • 모델은 파이피아이(PyPI)에서 파생된 커스터마이징된 데이터셋을 사용해 평가되며, 정확 일치와 식별자 일치를 메트릭으로 사용한다.

실험 결과

연구 질문

  • RQ1파일 내 맥락 외에 파일 간 맥락을 추가로 고려할 경우, 코드 완성 성능이 크게 향상될 수 있는가?
  • RQ2임포트 문장을 기반으로 한 정적 분석 도구인 CCFinder가 관련 파일 간 맥락을 얼마나 효과적으로 검색할 수 있는가?
  • RQ3파일 내 및 파일 간 맥락을 동시에 모델링할 경우, 코드 생성 정확도에 어떤 영향을 미치는가?
  • RQ4CoCoMIC은 파일 내 맥락 전용 기준 모델 및 미세조정된 코드 LMs와 비교해 어떤 성능을 보이는가?
  • RQ5파일 간 맥락이 가용하지 않을 경우 또는 더 큰 모델에 적용했을 경우 CoCoMIC의 한계는 무엇인가?

주요 결과

  • CCFinder는 파일 내 맥락 전용 대비 27.07% 더 많은 관련 맥락을 검색함으로써, 프로젝트 수준의 종속성을 식별하는 데 효과적임을 입증한다.
  • CoCoMIC은 파일 내 맥락 전용 기준 모델 대비 정확 일치에서 33.94%의 상대적 향상과 식별자 일치에서 28.69%의 상대적 향상을 달성한다.
  • 성능 향상은 특히 임포트된 클래스와 함수에 대한 지식이 필요한 경우에 특히 뚜렷하며, 다양한 코드 완성 시나리오에서 일관되게 유지된다.
  • 파일 간 맥락이 가용하지 않을 경우, CoCoMIC의 성능은 미세조정된 CodeGen 모델 대비 약 5–7% 상대적으로 저하되며, 외부 맥락에 의존하는 점을 강조한다.
  • 프레임워크는 더 큰 모델에의 확장 잠재력을 보이며, 2B, 6B, 16B 버전에 대한 경험적 검증은 향후 작업으로 남아 있다.
  • 원시 코드를 연결하는 대신 파일 간 맥락을 압축함으로써, 맥락 길이 제약을 효과적으로 해결한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.