SNEC: Semantic-based Non-Essential Change Detection
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.
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.
For comparing two versions of a.b.C
class (located in rev1/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
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
Last updated: Mar 6, 2013