Automated Software Transplantation


We report the automated transplantation of two features currently missing from Kate: call graph generation and automatic layout for C programs, which have been requested by users on the Kate development forum. Our approach uses a lightweight annotation system with Search Based techniques augmented by static analysis for automated transplanting. The results are promising: on average, our tool requires 101 minutes of standard desktop machine time to transplant the call graph feature, and 31 minutes to transplant the layout feature. We repeated each experiment 20 times and validated the resulting transplants using unit, regression and acceptance test suites. In 34 of 40 experiments conducted our search-based autotransplantation tool, MuScalpel , was able to successfully transplant the new functionality, passing all tests.

Our paper is available for download . This paper appeared in Symposium on Search-Based Software Engineering 2015.


In this paper, we illustrate the way in which realistic, scalable, and useful real-world transplantation can be achieved using MuScalpel. We apply our tool to the SSBSE 2015 Challenge program Kate, a popular text editor based on KDE. Its rich feature set and available plugins make it a popular, lightweight IDE for C developers. We perform two automated transplantations using MuScalpel . In the first example, we transplant call graph drawing ability from the GNU utility program Cflow, to augment the features of Kate with the ability to construct and display call graphs.

Our second transplantation incorporates a pretty printer feature for C (from GNU Indent), which Kate only partially supports and which its users have requested. We deployed a new version of Kate that incorporates these features, as two distinct plugins.


The host systems used in this experiments are available in the list below:


The donor systems used in this experiments are available in the list below:

utrans archetecture
Figure 1: Call Graph Generation in Kate.

2014 © Earl T. Barr, Mark Harman, Yue Jia, Alexandru Marginean, and Justyna Petke