Fung is a pattern mining tool for Java method call patterns. Our research aims to detect "copy-and-pasted" code fragments that are not covered by code clone detection.
Fung implements PrefixSpan, a sequential pattern mining algorithm,
to analyze frequent method call sequences.
Fung analyzes not only method calls but also control statements such
as if
, for
and while
.
In our experiment on JHotDraw 5.2b1, Fung detected method call patterns including implementation idioms (e.g. a loop using Iterator) and some heterogeneous crosscutting concerns (e.g. Undo impelmentation pattern in JHotDraw). Several examples are shown in our AOAsia3 paper.
We are also analyzing Java programs: JHotDraw 7.0, jEdit, Tomcat, Azureus, ANTLR and SableCC. We investigated only "frequent" patterns in the programs; we reported the result in the LATE 2008 workshop.
We are now preparing a distribution archive that contains an executable binary of Fung (fung.jar) that we have used in our paper. If you would like to try our tool for your research, please contact us.
(Since we are debugging and refactoring the tool now, the current distribution does not contain source code.)
All participants of the LATE 2008 workshop are acknowleged for their valuable feedback.
Please contact Takashi Ishio if you have any questions about Fung.
Takashi Ishio
ishio at ist.osaka-u.ac.jp (please replace "at" with "@".)
Assistant Professor
Software Engineering Laboratory
Graduate School of Information Science and Technology, Osaka University
Address:
c/o Prof. Katsuro Inoue
Department of Computer Science,
Graduate School of Information Science and Technology,
Osaka University
1-3 Machikaneyama-cho, Toyonaka, Osaka, 560-8531, JAPAN