Change Impact Recommendation for JavaScript: Lessons from History and Runtime Analysis

📅 2026-06-19
📈 Citations: 0
Influential: 0
📄 PDF
🤖 AI Summary
This work addresses the challenge of accurately predicting downstream impacts of code changes in JavaScript, a language whose dynamic nature limits the effectiveness of traditional change impact analysis methods in both coverage and precision. To overcome these limitations, the authors propose Caprese, a novel framework that systematically integrates historical co-change mining with runtime dynamic dependency analysis, revealing their complementary strengths in change impact prediction. Caprese employs a hybrid recommendation strategy that fuses co-change patterns, dynamic program analysis, and multi-source signals. Evaluation on ten open-source Node.js projects demonstrates that while dynamic analysis achieves higher precision, historical analysis captures additional relevant changes missed by dynamic methods; their combination significantly enhances both the completeness and practical utility of impact recommendations.
📝 Abstract
Understanding the downstream effects of code changes is essential for software maintenance, debugging, and regression testing. This task is particularly challenging for JavaScript applications, where dynamic language features such as callbacks, events, asynchronous execution, and shared mutable state make dependencies difficult to infer precisely. Existing change impact recommendation approaches rely primarily on either dependency-based analysis or repository mining. Dependency-based techniques, particularly dynamic analysis, capture runtime interactions from observed execution but may miss relationships not exercised during analysis. In contrast, history-based techniques uncover evolutionary coupling from past changes but often introduce imprecise recommendations due to noisy co-change patterns. To investigate the strengths and limitations of these approaches in JavaScript, we engineer and evaluate three recommendation techniques: a history-based approach using co-change pattern mining, a dynamic dependency-based approach, and a hybrid approach combining both signals. We implement these techniques in a unified framework, Caprese, and evaluate them on 10 open-source Node.js applications using expert-curated reference inspection sets. Our results reveal low overlap between candidates identified by history-based and dynamic analyses, with only 22% overlap at broader inspection budgets, indicating that the two approaches capture complementary impact signals. Dynamic analysis generally yields higher precision, while history-based analysis identifies additional relevant candidates missed by dependency analysis. These findings suggest that practical change impact recommendation in JavaScript benefits from combining runtime and evolutionary signals, as no single technique sufficiently captures all relevant inspection candidates.
Problem

Research questions and friction points this paper is trying to address.

change impact analysis
JavaScript
dynamic analysis
history-based analysis
dependency inference
Innovation

Methods, ideas, or system contributions that make the work stand out.

change impact analysis
JavaScript
dynamic analysis
history-based mining
hybrid recommendation
🔎 Similar Papers
No similar papers found.