code2vec을 이용한 유사도 감정 도구의 성능 개선
Enhancing the performance of code-clone detection tools using code2vec
0
조회
0
다운로드
0
인용
0
참고문헌
키워드
초록
소스코드 표절은 원본 자료의 출처를 분명히 밝히지 않고 자신의 것처럼 사용하는 행위를 말한다. 소스코드 표절로 인한 문제는 법적인 분쟁을 다투는 경우까지 다양한 문제를 일으킨다. 소스코드의 표절 여부는 일반적으로 비교 대상 소프트웨어 프로젝트 내의 각 소스코드를 전수 비교하여 유사도를 측정하여 결정한다. 전수 비교는 표절 가능성이 전혀 없는 코드도 비교 대상에 포함하기 때문에 그만큼의 시간을 헛되이 소모한다. 소스코드 표절로 의심되는 비교 쌍만 선별하여 비교할 수 있으면 그만큼 비교 횟수는 줄어들게 되어 탐지 도구의 실행 속도를 향상시킬 수 있을 뿐만 아니라, 표절 가능성이 높은 부분만을 대상으로 탐지의 정확도를 높이는데 집중할 수도 있다. 본 논문에서는 code2vec 이라는 기계학습 모델을 활용하여 코드 클론으로의심되는 소스코드들을 미리 분류하여 비교 횟수를 줄임으로써 소스코드 표절 탐지의 성능을 개선할 수 있음을 보인다.
Abstract
Plagiarism refers to the act of using the original data as if it were one’s own without revealing the source. The plagiarism of source code causes a variety of problems, including legal disputes. Plagiarism in software projects is usually determined by measuring similarity by comparing every pair of source code within two projects. However, blindly comparing every pair has been a huge computational burden, causing a major factor of not using tools of better accuracy. If we can only compare pairs that are probable to be clones, eliminating pairs that are impossible to be clones, we can concentrate more on improving the accuracy of detection. In this paper, we propose a method of selecting highly probable candidates of clone pairs by pre-classifying suspected source-codes using a machine-learning model called code2vec.
참고문헌 (16)
- N.Saini, "Code Clones: Detection and Management", Proc. of the International Conference on Computational Intelligence and Data Science 2018 (2018)
- 박성윤, "메모리 액세스 로그 분석을 통한 프로그램 표절 검출", 정보처리학회논문지D, 13(6), pp.833~838 (2006), 한국정보처리학회
- 손승우, "분쟁사례를 통해 본 DC 법률 문제4", (143), pp.108~111 (2005)
- Chanchal K. Roy, "Comparison and evaluation of code clone detection techniques and tools: A qualitative approach", Science of Computer Programming, 74(7), pp.470~495 (2009), Elsevier BV[DOI]
- Pratiksha Gautam, "Various Code Clone Detection Techniques and Tools: A Comprehensive Survey"
- "Code similarity detection through control statement and program features" (2019)[URL]
- Hamid Abdul Basit, "Efficient token based clone detection with flexible tokenization", Proc. of the Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering (2007)
- 조영빈, "TBCNN 기반 코드 클론 유형 분류", 한국정보기술학회논문지, 18(3), pp.79~88 (2020), 한국정보기술학회[DOI]
- 김연어, "클래스 구조 그래프 비교를 통한 프로그램 표절 검사 방법", 한국콘텐츠학회 논문지, 13(11), pp.37~47 (2013), 한국콘텐츠학회[DOI]
- 최성하, "벨론 레퍼런스 코퍼스를 기준으로 exEyes의 재현율 평가", 한국소프트웨어감정평가학회 논문지, 11(1), pp.31~39 (2015), 한국소프트웨어감정평가학회
- 박건우, "트리 기반 컨볼루션 신경망을 이용한 BigCloneBench 개선", 한국소프트웨어감정평가학회 논문지, 15(1), pp.43~53 (2019), 한국소프트웨어감정평가학회[DOI]
- Uri Alon, "code2vec: learning distributed representations of code", Proceedings of the ACM on Programming Languages, 3(POPL), pp.1~29 (2019), Association for Computing Machinery (ACM)[DOI]
- 양준혁, "code2vec 모델을 활용한 소스 코드 보안 취약점 탐지", 한국소프트웨어감정평가학회 논문지, 16(2), pp.45~52 (2020), 한국소프트웨어감정평가학회
- Renaud Pawlak, "SPOON : A library for implementing analyses and transformations of Java source code", Software: Practice and Experience, 46(9), pp.1155~1179 (2016), Wiley[DOI]
- "code2vec, Java-large dataset"[URL]
- "BigCloneBench" (2017)[URL]
