Analyzing Stack Flows to Compare Java Programs

Hyun-il LIM  Taisook HAN  

IEICE TRANSACTIONS on Information and Systems   Vol.E95-D   No.2   pp.565-576
Publication Date: 2012/02/01
Online ISSN: 1745-1361
DOI: 10.1587/transinf.E95.D.565
Print ISSN: 0916-8532
Type of Manuscript: PAPER
Category: Software System
software clone detection,  software copyright protection,  Java bytecode analysis,  

Full Text: PDF(431.9KB)>>
Buy this Article

This paper presents a method for comparing and detecting clones of Java programs by analyzing program stack flows. A stack flow denotes an operational behavior of a program by describing individual instructions and stack movements for performing specific operations. We analyze stack flows by simulating the operand stack movements during execution of a Java program. Two programs for detection of clones of Java programs are compared by matching similar pairs of stack flows in the programs. Experiments were performed on the proposed method and compared with the earlier approaches of comparing Java programs, the Tamada, k-gram, and stack pattern based methods. Their performance was evaluated with real-world Java programs in several categories collected from the Internet. The experimental results show that the proposed method is more effective than earlier methods of comparing and detecting clones of Java programs.