Continuous Semantic Inspection
- Author(s): Yan, Yan
- Advisor(s): Griswold, William G
- et al.
As testing is an incomplete validation of software changes, many developers review code changes before patching the system. Popular source code versioning systems aid review by showing the textual differences between the old and new versions of the source code. This leaves developers with the difficult task of determining whether the differences produced the desired behavior.
We introduce Continuous Semantic Inspection (CSI), which aids code review with inter-version differential semantic analysis. During inspection of a new commit, a developer is presented with not only code differences, but also changes to behaviors, as expressed by likely invariants inferred from testing. We hypothesize that with the extra semantic information developers can more easily determine whether the code changes produced the desired effect.
This dissertation comprises four parts to demonstrate our hypothesis. (1) We present the design and implementation of GETTY, a highly automated tool to support the concept of CSI. (2) To scale the expensive invariant inferences for practical use, we divide GETTY’s analysis into multiple processes distributed to a 16-processor cluster. We achieve substantial performance improvement and show that our approach is feasible for open source projects by enabling a timely repair-compile-review feedback loop. (3) From applying CSI on six open source projects, we found inferred invariants contain the information required to help discover insufficient tests and inconsistent semantic changes at the time of their introduction. (4) We conducted a user study of reviewers using GETTY, which shows that invariant differentials draw attention to information that otherwise often escapes notice, helping developers formulate more focused questions that keep the review moving forward.