SNEC: Semantic-based Non-Essential Change Detection
Introduction
We propose a novel technique SNEC, which identifies non-essential changes by observing semantic
equivalence estimated by a semantic-aware static analyzer. Abundant non-essential changes in software history
have negative impacts on software mining tasks such as co-change recommendation and defect prediction.
Our technique can improve performance of mining tasks by filtering out non-essential changes effectively.
Download
SNEC binary
SNEC needs following dependencies:
When you experience any weird bug, try nightly versions of dependencies first. If the bug still remains
after library updates, please report to authors.
Quick Start
For comparing two versions of
a.b.C class (located in
rev1/a/b/C.class and
rev2/a/b/C.class):
- Install JRE 1.6 or later, Scala 2.9.1 and download other dependencies
- Generate first summary dump:
scala -cp sootclasses-2.4.0.jar:choco-solver-2.1.2.jar SNEC.jar -cp rev1 a.b.C -summary_dump_file first.dump
- Generate second summary dump:
scala -cp sootclasses-2.4.0.jar:choco-solver-2.1.2.jar SNEC.jar -cp rev2 a.b.C -summary_dump_file second.dump
- Compare two summary files:
scala -cp sootclasses-2.4.0.jar:choco-solver-2.1.2.jar SNEC.jar -old_summary_file first.dump -new_summary_file second.dump -compare_by_name
Experimental Results
All experimental results can be downloaded
here.
The file consists of three parts
- Non-essential change detection
- Application to co-change recommendation
- Application to defect prediction
People
Last updated: Mar 6, 2013