본문 바로가기
KERD
논문KCI 등재

공통 토큰에 기반한 서로 다른 언어의 유사성 검사

Cross-Language Clone Detection based on Common Token

0

조회

0

다운로드

0

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

서로 다른 언어로 작성된 소스코드의 유사성 검사는 주로 요약구문트리를 기반으로 비교를 수행한다. 하지만 대규모의 소스코드를 실용적인 수준으로 비교하려면 토큰수준 기반에서 작동하는 유사성 검사 기술이 필요하다. 본 연구에서는 서로 다른 언어에서 생성되었지만 같은 의미를 지닌 토큰을 표현할 수 있는 공통 토큰을 정의하고, 소스코드에서 언어별 처리 과정을 거쳐 생성한 공통 토큰의 나열을 입력으로 소스코드의 유사성 검사를 수행하는 방법을 제안한다. 한국저작권위원회의 표절검사 도구 exEyes를 사용해서 서로 다른 언어로 작성된 동일한 코드를 대상으로 실험한 결과, 제안한 방법을 사용했을 때, 유사성 평가 성능이 향상됨을 보였다.

Abstract

Tools for detecting cross-language clones usually compare abstract-syntax-tree representations of source code, which lacks scalability. In order to compare large source code to a practical level, we need a similarity checking technique that works on a token level basis. In this paper, we define common tokens that represent all tokens commonly used in programming languages of different paradigms. Each source code of different language is then transformed into the list of common tokens that are compared. Experimental results using exEyes show that our proposed method using common tokens is effective in detecting cross-language clones.

참고문헌 (15)

  1. Vislavski, Tijana, "LICCA : A tool for cross-language clone detection", 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER) (2018), IEEE
  2. Kraft, Nicholas A., "Cross-language Clone Detection", SEKE, ~ (2008)
  3. Cheng, Xiao, "Mining revision histories to detect cross-language clones without intermediates", Proceedings of the 31st IEEE, 2016, ~[DOI]
  4. "exEyes" (2015)[URL]
  5. Baker, B., "Deducing similarities in java sources form byte codes", USENIX ATEC, pp.15~18 (1999)
  6. Johnson, J. H, "Identifying Redundancy in Source Code Using Finger-prints", CASCON, pp.171~183 (1993)
  7. Baker, B., "On Finding Duplication and Near-Duplication in Large Software Systems", WCRE, pp.86~95 (1995)
  8. Kamiy, T., "CCFinder : A multi-linguistic token based code clone detection system for large scale source code", IEEE Trans. Software Engineering, 28(7) (2002)
  9. Baxter, I., "DMS : Program Transformation for Practical Scalabel Software Evolution", ICSE04, pp.625~634 (2004)
  10. Jiang, L., "DECKARD : Scalable and Accurate Tree-based Detection of Code Clones", ICSE, pp.96~105 (2007)
  11. Komondoor, R., "“Tool Demonstration: Finding Duplicated Code Using Program Dependences”, In ESOP", LNCS, 2028, pp.383~386 (2001)
  12. Liu, C., "GPLAG: Detection of Software Plagiarism by Program Dependence Graph Analysis", KDD, pp.872~881 (2006)
  13. "softwareclones"[URL]
  14. "Eclipse Plugin"[URL]
  15. "java2python"[URL]

관련 논문AI추천

이 간행물의 다른 논문 (11건)