A Program Similarity Evaluation Algorithm

프로그램 유사도 평가 알고리즘

  • 김영철 (숭실대학교 정보미디어기술연구소) ;
  • 황석찬 (한국과학기술정보연구원 슈퍼컴퓨팅센터) ;
  • 최재영 (숭실대학교 컴퓨터학부)
  • Published : 2005.02.01

Abstract

In this paper, we introduce a system for evaluating similarity of C program source code using method which compares syntax-trees each others. This method supposes two characteristic features as against other systems. It is not sensitive for program style such as indentation, white space, and comments, and changing order of control structure like sentences, code block, procedures, and so on. Another is that it can detect a syntax-error cause of using paring technique, We introduce algorithms for similarity evaluation method and grouping method that reduces the number of comparison, In the examination section, we show a test result of program similarity evaluation and its reduced iteration by grouping algorithm.

본 논문에서는 서로 다른 두 개의 C 프로그램의 구문트리를 이용하여 유사도를 평가하는 시스템을 제시한다. 구문 트리를 이용하는 방법은 기존의 유사도 평가 방법과는 달리 들여쓰기, 여백, 설명문 등 프로그램과 무관한 프로그램 스타일의 변화에 민감하지 않으며, 문장, 코드 블록, 함수 등의 순서 바꾸기 같은 제어 구조의 변경에 민감하지 않은 특징을 가지고 있다. 그리고 프로그램을 파싱함으로써 구문 오류도 함께 검사찬 수 있는 장점을 제공한다. 논문에서는 유사도를 평가하기 위한 알고리즘과 함께 프로그램의 비교횟수를 줄이기 위한 그룹 짓기 알고리즘도 같이 제공한다. 실험부분에서는 구문트리 비교방법을 이용한 프로그램의 유사도 평가 결과와, 그룹 짓기를 수행한 후에 많은 비교 횟수를 줄일 수 있다는 것을 보여준다.

Keywords