Overview
Code changes that appear independent can interact through data flow, assignments, and other program relationships. These interactions can be difficult to identify when reviewing changes using a traditional file-based interface.
InView integrates semantic-dependency information into the code-review process. It presents relationships between changes as an interactive graph and connects those relationships to the relevant source-code locations.
Motivation
Pull requests are commonly reviewed in isolation. However, a change may depend on decisions or modifications introduced by a previous pull request. If reviewers overlook these relationships, they may also overlook unintended effects in the combined program behavior.
InView was developed to help reviewers:
- identify relationships between changes;
- understand how previous and current changes interact;
- navigate between related source-code locations;
- evaluate the effects of combined changes.
Analyses
InView currently represents two primary forms of semantic dependency:
Data flow
Data-flow relationships show how values produced or modified in one location can affect another part of the program.
Overriding assignment
Overriding-assignment relationships identify cases in which an assignment introduced by one change may overwrite or modify the effect of another assignment.
Empirical evaluation
InView was evaluated using code-review tasks and semi-structured interviews with 12 software developers from eight teams across seven companies.
The study investigated dependency detection, review efficiency, and developers’ perceptions of the interface compared with GitHub’s standard File Changes interface.
