[논문 리뷰] SourcererCC: Scaling Code Clone Detection to Big Code
SourcererCC는 확장성 있고 토큰 기반의 클론 탐지 도구로, 최적화된 역인덱스와 토큰 순서 히ュ리스틱을 사용하여 대규모 이종 프로젝트 리포지터리에서 정확한 클론과 근접한 클론(유형-3)을 탐지한다. 단일 워크스테이션에서 250MLOC의 코드를 처리하면서도 기존 도구보다 확장성과 정확도 면에서 뛰어난 성능을 보이며, 일반 목적의 클론 탐지에 적합하다.
Despite a decade of active research, there is a marked lack in clone detectors that scale to very large repositories of source code, in particular for detecting near-miss clones where significant editing activities may take place in the cloned code. We present SourcererCC, a token-based clone detector that targets three clone types, and exploits an index to achieve scalability to large inter-project repositories using a standard workstation. SourcererCC uses an optimized inverted-index to quickly query the potential clones of a given code block. Filtering heuristics based on token ordering are used to significantly reduce the size of the index, the number of code-block comparisons needed to detect the clones, as well as the number of required token-comparisons needed to judge a potential clone. We evaluate the scalability, execution time, recall and precision of SourcererCC, and compare it to four publicly available and state-of-the-art tools. To measure recall, we use two recent benchmarks, (1) a large benchmark of real clones, BigCloneBench, and (2) a Mutation/Injection-based framework of thousands of fine-grained artificial clones. We find SourcererCC has both high recall and precision, and is able to scale to a large inter-project repository (250MLOC) using a standard workstation.
연구 동기 및 목표
- 대규모 이종 프로젝트 리포지터리에서 근접 클론을 처리할 수 있는 확장성 있고 정확한 클론 탐지기가 부족한 문제를 해결하기 위해.
- 분산 컴퓨팅이 필요 없이 일반 목적의 클론 탐지 도구로서 유형-3(근접 클론)를 지원하도록 개발하기 위해.
- 표준 하드웨어에서 효율적으로 작동하면서도 클러스터 기반 설정의 복잡성과 비용을 피하기 위해 고재현율과 고정밀도를 달성하기 위해.
- 연구자와 개발자가 소프트웨어 유지보수, 포크 관리, 대규모 코드 분석에 실질적으로 활용할 수 있도록 하기 위해.
제안 방법
- SourcererCC는 코드 블록을 토큰의 집합으로 표현하는 방식을 사용하여, 유형-3 클론에서 흔히 발생하는 경미한 구문적 변경에 강건하다.
- 임의의 코드 블록에 대해 잠재적 클론 후보를 신속하게 검색할 수 있도록 토큰 기반의 부분 역인덱스를 구축한다.
- 토큰 순서 기반 필터링 히ュ리스틱은 인덱스 크기를 줄이고 많은 임의의 오진을 조기에 제거하여 전체 코드 블록 비교를 최소화한다.
- 토큰 순서를 사용해 유사도에 대한 실시간 상한선을 계산하여, 더 적은 토큰 비교로 후보를 거부하거나 수락한다.
- 시스템은 두 가지 버전으로 구현되었다: 배치 분석을 위한 SourcererCC-B와 Eclipse 내에서의 인터랙티브 IDE 통합을 위한 SourcererCC-I.
- 도구는 프로그래밍 언어에 관계없이 작동하며, 분산 없이도 표준 워크스테이션에서 배포 및 실행이 가능하도록 설계되었다.
실험 결과
연구 질문
- RQ1단일 머신에서 확장성 있게 작동하면서도 토큰 기반 클론 탐지 시스템이 유형-3 클론에 대해 고재현율과 고정밀도를 달성할 수 있는가?
- RQ2SourcererCC의 성능은 스케일링, 실행 시간, 재현율, 정밀도 측면에서 최첨단 도구와 비교해 어떻게 되는가?
- RQ3토큰 순서 기반 필터링 히ュ리스틱은 인덱스 크기와 비교 오버헤드를 어느 정도 줄이는가?
- RQ4SourcererCC는 분산 인fra구조 없이도 대규모 이종 프로젝트 리포지터리(예: 250MLOC)에서 클론을 탐지할 수 있는가?
주요 결과
- SourcererCC는 표준 워크스테이션만으로 250MLOC의 이종 프로젝트 리포지터리(IJaDataset-2.0)에서 클론을 탐지했으며, 분석을 4.5일 만에 완료했다.
- 두 가지 벤치마크에서 높은 재현율을 달성했다: BigCloneBench와 세밀한 인젝션 기반의 인공 클론 프레임워크.
- 다수의 클론 전문가의 검증을 통해 클론 탐지 결과의 높은 일致성과 신뢰성을 확인했다.
- 최적화된 인덱스는 18GB의 소스 코드에 대해 단지 1.2GB의 크기였으며, 이는 이전의 인덱스 기반 접근 방식에 비해 뛰어난 공간 효율성을 보였다.
- SourcererCC는 네 가지 최첨단 도구보다 재현율과 정밀도 면에서 모두 뛰어나며, 특히 유형-3 클론 탐지에서 뛰어난 성능을 보였다.
- 필터링 히ュ리스틱은 필요한 코드 블록 비교와 토큰 비교의 수를 줄여 성능 향상에 기여했다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.