论文部分内容阅读
Inspecting and testing code changes typically require a significant amount of developer effort.As a system evolves,developers often create composite changes by mixing multiple development issues,as opposed to addressing one independent issue-an atomic change.Inspecting composite changes often becomes time-consuming and error-prone.To test unrelated edits on composite changes,rerunning all regression tests may require excessive time.To address the problem,we present an interactive technique for change decomposition to support code reviews and regression test selection,called CHGCUTTER.When a developer specifies code change within a diff patch,CHGCUTTER partitions composite changes into a set of related atomic changes,which is more cohesive and self-contained regarding the issue being addressed.For composite change inspection,it generates an intermediate program version that only includes a related change subset using program dependence relationships.For cost reduction during regression testing,it safely selects only affected tests responsible for changes to an intermediate version.In the evaluation,we apply CHGCUTTER to 28 composite changes in four open source projects.CHGCUTTER partitions these changes with 95.7% accuracy,while selecting affected tests with 89.0% accuracy.We conduct a user study with professional software engineers at PayPal and find that CHGCUTTER is helpful in understanding and validating composite changes,scaling to industry projects.