Tools


I devoted myself to developing some tools to ease the burden of programmers, which includes debugger, code recommender, diff visualizer, etc. Please kindly check the following description. If you are interested in using these tools, please contact me by llmhyy@gmail.com. Your report of bug will be well welcomed.

1. Ready Tools and Prototypes

MCIDiff

MCIDiff is a tool to compute the differences of multiple code clone instances and visualize it simutaneously. The tool helps and supports developers on clone-related tasks such as refactoring and change propagation on duplicated code. The source code is available in https://github.com/llmhyy/mcidiff. You may check ICSE paper and introduction website for more details.

CCDemon

CCDemon is a clone-based code recommender to recommend modification on pasted code. It regards clones of the pasted code as the results of historical copy-and-paste operations and their differences as historical modifications on the same piece of code. CCDemon further mines modifying regulations from the clone differences. Based on the mined modifying regulations, CCDemon dynamically updates the suggested options and their ranking in each slot according to developer's modifications on the pasted code. More detailed can be checked in our ESEC/FSE paper.

Clonepedia

Clonepedia is code clone summarization tool to organize code clone report with syntactic and semantic program information. More details can be checked in our ICSME paper and introduction website.



2. On-going Tools

Microbat

A feedback-based debugger for interactively recommending suspicious step in buggy program execution. It records the trace of the execution of a buggy program and allow developers to provide light-weight feedback on trace steps. Microbat is able to learn, analyze, and reason based on developers' feedback and program information and recommend suspicious step in buggy program. A demo video can be checked in https://www.youtube.com/watch?v=jA3131MWuzs.

MICoDE

MICoDE is short for "Mining Implicit Code Template for Design-Level Reuse", which is a tool to automatically extract and abstract recurring designs from code base into design templates. The mined templates allows developers to make further customization for generating new code. The generated code involves the code skeleton of recurring design as well as the code bodies annotated with comments and hints to remind developers of necessary modification.