DOI QR코드

DOI QR Code

Enhancing the performance of code-clone detection tools using code2vec

code2vec을 이용한 유사도 감정 도구의 성능 개선

  • 엄태호 (한양대학교 소프트웨어학부) ;
  • 홍성문 (한양대학교 컴퓨터공학과) ;
  • 양준혁 (한양대학교 컴퓨터공학과) ;
  • 장효석 (한양대학교 소프트웨어학부) ;
  • 도경구 (한양대학교 소프트웨어학부)
  • Received : 2021.06.05
  • Accepted : 2021.06.20
  • Published : 2021.06.30

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.

소스코드 표절은 원본 자료의 출처를 분명히 밝히지 않고 자신의 것처럼 사용하는 행위를 말한다. 소스코드 표절로 인한 문제는 법적인 분쟁을 다투는 경우까지 다양한 문제를 일으킨다. 소스코드의 표절 여부는 일반적으로 비교 대상 소프트웨어 프로젝트 내의 각 소스코드를 전수 비교하여 유사도를 측정하여 결정한다. 전수 비교는 표절 가능성이 전혀 없는 코드도 비교 대상에 포함하기 때문에 그만큼의 시간을 헛되이 소모한다. 소스코드 표절로 의심되는 비교 쌍만 선별하여 비교할 수 있으면 그만큼 비교 횟수는 줄어들게 되어 탐지 도구의 실행 속도를 향상시킬 수 있을 뿐만 아니라, 표절 가능성이 높은 부분만을 대상으로 탐지의 정확도를 높이는데 집중할 수도 있다. 본 논문에서는 code2vec 이라는 기계학습 모델을 활용하여 코드 클론으로 의심되는 소스코드들을 미리 분류하여 비교 횟수를 줄임으로써 소스코드 표절 탐지의 성능을 개선할 수 있음을 보인다.

Keywords

Acknowledgement

본 연구는 과학기술정보통신부 및 정보통신기획평가원의 SW중심대학지원사업의 연구결과로 수행되었음(2018-0-00192)

References

  1. N.Saini et al., "Code Clones: Detection and Management", Proc. of the International Conference on Computational Intelligence and Data Science 2018. https://doi.org/10.1016/j.procs.2018.05.080
  2. 한상용, 박성윤, "메모리 액세스 로그 분석을 통한 프로그램 표절 검출", 정보처리학논문지 vol.13, no.6, pp.833-838, 2006.
  3. 손승우, 분쟁사례를 통해 본 DC 법률 문제 4. , 143(), 108-111, 2005.
  4. Chanchal K. Roy et al., "Comparison and evaluation of code clone detection techniques and tools: A qualitative approach", Proc. of the Science of Computer Programming Volume 74, Issue 7, pp.470-495, 1 May 2009, https://doi.org/10.1016/j.scico.2009.02.007
  5. Pratiksha Gautam et al., "Various Code Clone Detection Techniques and Tools: A Comprehensive Survey", DOI: 10.1007/978-981-10-3433-6_79
  6. M.Sudhamani et al, "Code similarity detection through control statement and program features", 2019. https://doi.org/10.14801/jkiit.2020.18.3.79
  7. Hamid Abdul Basit et al., "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.
  8. 조영빈, 유철중, 이지현, "TBCNN 기반 코드 클론 유형 분류", 한국정보기술학회논문지, 제18권 제3호, 2020.
  9. 김연어, 이윤정, 우균, "클래스 구조 그래프 비교를 통한 프로그램 표절 검사 방법", 한국콘텐츠학회, JCCC 2013. http://dx.doi.org/10.5392/JKCA.2013.13.11.037
  10. 최성하, 도경구, "벨론 레퍼런스 코퍼스를 기준으로 exEyes의 재현율 평가", 한국소프트웨어감정평가학회 논문지, 제11권 제1호, 2015. http://www.i3.or.kr/html/paper/2015-1/(4)2015-1.pdf
  11. 박건우, 홍성문, "트리 기반 컨볼루션 신경망을 이용한 BigCloneBench 개선", 한국소프트웨어감정평가학회 논문지 제15권 제1호, 2019. http://dx.doi.org/10.29056/jsav.2019.06.05.
  12. Uri. Alon etal, "code2vec: learning distributed representations of code", Proc. of the ACM on Programming Languages Vol.3, 2019. https://doi.org/10.1145/3290353
  13. 양준혁, 모지환, 홍성문, 도경구, "code2vec 모델을 활용한 소스코드 보안 취약점 탐지", 한국소프트웨어감정평가학회 논문지 제16권 제2호, 2020. http://dx.doi.org/10.29056/jsav.2020.12.05.
  14. Renaud Pawlak et al., "Spoon: A Library for Implementing Analyses and Transformations of Java Source Code". Proc. of the Software Practice and Experience 2015. https://doi.org/10.1002/spe.2346
  15. code2vec, Java-large dataset https://github.com/tech-srl/code2vec
  16. BigCloneBench, https://github.com/clonebench/BigCloneBench, June 2017.