Breaking-Good: Explaining Breaking Dependency Updates with Build Analysis
<|reference_start|>Breaking-Good: Explaining Breaking Dependency Updates with Build Analysis: Dependency updates often cause compilation errors when new dependency versions introduce changes that are incompatible with existing client code. Fixing breaking dependency updates is notoriously hard, as their root cause can be hidden deep in the dependency tree. We present Breaking-Good, a tool that automatically generates explanations for breaking updates. Breaking-Good provides a detailed categorization of compilation errors, identifying several factors related to changes in direct and indirect dependencies, incompatibilities between Java versions, and client-specific configuration. With a blended analysis of log and dependency trees, Breaking-Good generates detailed explanations for each breaking update. These explanations help developers understand the causes of the breaking update, and suggest possible actions to fix the breakage. We evaluate Breaking-Good on 243 real-world breaking dependency updates. Our results indicate that Breaking-Good accurately identifies root causes and generates automatic explanations for 70% of these breaking updates. Our user study demonstrates that the generated explanations help developers. Breaking-Good is the first technique that automatically identifies causes of a breaking dependency update and explains the breakage accordingly.<|reference_end|>
@article{reyes2024breaking-good:,
    title={Breaking-Good: Explaining Breaking Dependency Updates with Build
  Analysis},
    author={Frank Reyes, Benoit Baudry and Martin Monperrus},
    journal={arXiv preprint arXiv:2407.03880},
    year={2024},
    archivePrefix={arXiv},
    eprint={2407.03880},
    primaryClass={cs.SE}
}