2,010 research outputs found
Coming: a Tool for Mining Change Pattern Instances from Git Commits
Software repositories such as Git have become a relevant source of
information for software engineer researcher. For instance, the detection of
Commits that fulfill a given criterion (e.g., bugfixing commits) is one of the
most frequent tasks done to understand the software evolution. However, to our
knowledge, there is not open-source tools that, given a Git repository, returns
all the instances of a given change pattern. In this paper we present Coming, a
tool that takes an input a Git repository and mines instances of change
patterns on each commit. For that, Coming computes fine-grained changes between
two consecutive revisions, analyzes those changes to detect if they correspond
to an instance of a change pattern (specified by the user using XML), and
finally, after analyzing all the commits, it presents a) the frequency of code
changes and b) the instances found on each commit. We evaluate Coming on a set
of 28 pairs of revisions from Defects4J, finding instances of change patterns
that involve If conditions on 26 of them
Automatically Extracting Instances of Code Change Patterns with AST Analysis
A code change pattern represents a kind of recurrent modification in
software. For instance, a known code change pattern consists of the change of
the conditional expression of an if statement. Previous work has identified
different change patterns. Complementary to the identification and definition
of change patterns, the automatic extraction of pattern instances is essential
to measure their empirical importance. For example, it enables one to count and
compare the number of conditional expression changes in the history of
different projects. In this paper we present a novel approach for search
patterns instances from software history. Our technique is based on the
analysis of Abstract Syntax Trees (AST) files within a given commit. We
validate our approach by counting instances of 18 change patterns in 6
open-source Java projects.Comment: ICSM - 29th IEEE International Conference on Software Maintenance
(2013
Do the Fix Ingredients Already Exist? An Empirical Inquiry into the Redundancy Assumptions of Program Repair Approaches
Much initial research on automatic program repair has focused on experimental
results to probe their potential to find patches and reduce development effort.
Relatively less effort has been put into understanding the hows and whys of
such approaches. For example, a critical assumption of the GenProg technique is
that certain bugs can be fixed by copying and re-arranging existing code. In
other words, GenProg assumes that the fix ingredients already exist elsewhere
in the code. In this paper, we formalize these assumptions around the concept
of ''temporal redundancy''. A temporally redundant commit is only composed of
what has already existed in previous commits. Our experiments show that a large
proportion of commits that add existing code are temporally redundant. This
validates the fundamental redundancy assumption of GenProg.Comment: ICSE - 36th IEEE International Conference on Software Engineering
(2014
Appendix of "Mining Software Repair Models for Reasoning on the Search Space of Automated Program Fixing"
This is the companion paper of "Mining Software Repair Models for Reasoning on the Search Space of Automated Program Fixing", accepted for publication in Empirical Software Engineering (Springer) on Sep. 11, 2013
Mining Repair Actions for Automated Program Fixing
National audienceAutomated program fixing consists of generating source code in order to fix bugs in an automated manner. Our intuition is that automated program fixing can imitate human-based program fixing. Hence, we present a method to mine repair actions from software repositories. A repair action is a small semantic modification on code such as adding a method call. A repair model can be defined as a set of repair action. By applying our method on 14 repositories of Java software and 89993 versioning transactions, we present two repair models that are meant to be generalizable and reusable for automated program fixing. Hence, we then show how those repair actions can be used in an automated software repair process called MCRepair
- …