Mulaert et al.
Recommendation
* Commits should consist of changes related to a single task i.e. they should be atomic
* easier to revert changes
* find/recover from bugs
In Practice
* 15% of bug fixing commits contain unrelated changes[1]
* 17-29% commits are composite i.e. contain multiple changes[2]
[1] Herzig et al
[2] Tao et al
Background
Solution: use tools to "untangle" commit
This paper:
What are some problems posed by composite commits?
Trees and Diffs
string hello = "sup";
VariableDeclaration
Target (hello)
StringLiteral("sup")
Tree Diffing:
Compute the "diff" between two trees and categorize each change as insert, update, move or delete
Abstract Syntax Tree
Source Code
Type(string)
NameExpr(hello)
Approach
1. Calculate tree diff
2. Compute static slice for each change
3. Two changes c_i and c_j, are related iff:
Research Questions
RQ 1: Does the proposed technique correctly identify composite commits?
RQ 2: Does the proposed technique correctly identify single task within a commit?
Evaluation
RQ1 Results:
RQ 2 Results
Survey Results
Critique
+ Novel approach
+ Replication package
- Usage of TinyPDG and Change-Distiller
+ Good first step to solving a relevant problem
- No comparison to state of the art approaches
- Not the best written paper
- Evaluation for RQ2 weak