This project is built for computing differences of multiple clone instances. The differencing result is able to regard syntactic boundary.
Eclipse Plugin vs Oridinary Java Application
The project is built as an Eclipse plugin by default as MCIDiff is designed for being integrating into SE tools. Building tools in terms of Eclipse plugin is a mainstream in SE community. If you want to build the project into a common Java project, you can replace the pom.xml by the pom-application.xml file.
Examples on how to use MCIDiff API are listed in the test package under src/test directory. MCIDiff provide two alternatives to diff the cloned code, (1) token-based diff, which report diff result in terms of tokens; and (2) token-sequence-based diff, which report diff result in terms of token sequence regarding the syntactic boundary. The token-based diff technique is proposed in our ICSE'14 work and the token-sequence-based diff technique is proposed in our FSE'15 work. Please check more details in the Citation Section.
The differencing result of MCIDiff contains line information such as token position and token offset. Generally, you may need to change the line delimiter into Windows form (i.e., \r\n). Otherwise, the line information get incorrect.
If you need to reference our technique, please use the following citations:
Yun Lin, Xin Peng, Zhenchang Xing, Diwen Zheng, and Wenyun Zhao. 2015. Clone-based and interactive recommendation for modifying pasted code. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2015). ACM, New York, NY, USA, 520-531. DOI=http://dx.doi.org/10.1145/2786805.2786871
Yun Lin, Zhenchang Xing, Yinxing Xue, Yang Liu, Xin Peng, Jun Sun, and Wenyun Zhao. 2014. Detecting differences across multiple instances of code clones. In Proceedings of the 36th International Conference on Software Engineering (ICSE 2014). ACM, New York, NY, USA, 164-174. DOI=http://dx.doi.org/10.1145/2568225.2568298
If you have any problem on using our code, please feel free to contact me by: email@example.com or firstname.lastname@example.org. You can also contact Prof. Xin Peng (email@example.com) or Prof. Zhenchang Xing (firstname.lastname@example.org) for more information.