
TL;DR
This paper introduces invariant diffs, a method to analyze and compare program conditions across multiple versions using static analysis, helping understand the semantics of code changes in software evolution.
Contribution
It proposes a novel static, path-sensitive analysis to compute version invariants and invariant churns, linking source code changes to property modifications across program versions.
Findings
Invariant diffs accurately capture common program properties.
Invariant churns reveal how code changes affect program semantics.
The approach is efficient on multiple program versions.
Abstract
Software development is inherently incremental. Nowadays, many software companies adopt an agile process and a shorter release cycle, where software needs to be delivered faster with quality assurances. On the other hand, the majority of existing program analysis tools still target single versions of programs and are slow and inflexible to handle changes. In the popular version control systems such as git, the program changes are still presented using source code diffs. It is hard to understand what program conditions are changed and which source code lines cause them. In this paper, we propose to compute "invariant diffs" to specify changes. Similar to source diffs that report common code and code churns, we define version invariants to represent program conditions that are common across versions, and invariant churns to show the changes of program conditions between versions. We…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software System Performance and Reliability · Software Reliability and Analysis Research
