DABCheck: A Plugin for Detecting Disruptive Changes in Default Arguments of Python Libraries

  • Gabriel Lima Barros UFMG
  • João Vítor Bicalho UFMG
  • João Eduardo Montandon UFMG

Abstract


No ecossistema Python, os valores-padrão são amplamente utilizados para simplificar o uso de métodos e funções em APIs. Esse recurso permite que métodos sejam chamados sem a necessidade de especificar todos os argumentos, atribuindo automaticamente valores-padrão aos argumentos omitidos. Acontece que, ao modificar o valor-padrão de um argumento, o comportamento dos clientes que dependem deste valor-padrão também são afetados. Essa mudança disruptiva é conhecida como Default Argument Breaking Change (DABC). Neste artigo, apresentamos o DABCheck, um plugin para detectar chamadas de métodos expostas a DABCs. Desenvolvido para as IDEs PyCharm e Visual Studio Code, o plugin funciona como um linter, analisando o código-fonte em tempo real e destacando chamadas vulneráveis. Atualmente, ele suporta a detecção de DABCs em três bibliotecas Python: Scikit-Learn, NumPy e Pandas. O artigo detalha as funcionalidades do plugin, sua arquitetura em cada IDE, e apresenta um exemplo de uso. Demo Video: https://youtu.be/Ht_oRvqnsFs.

Keywords: Mudanças Disruptivas, Argumentos-Padrão, APIs, Python

References

Mohamed Raed El aoun, Lionel Nganyewou Tidjon, Ben Rombaut, Foutse Khomh, and Ahmed E. Hassan. 2022. An Empirical Study of Library Usage and Dependency in Deep Learning Frameworks.

Livia Barbosa and Andre Hora. 2022. How and Why Developers Migrate Python Tests. In International Conference on Software Analysis, Evolution and Reengineering (SANER). 538–548.

Aline Brito, Marco Tulio Valente, Laerte Xavier, and Andre Hora. 2020. You Broke My Code: Understanding the Motivations for Breaking Changes in APIs. Empirical Software Engineering 25, 2 (March 2020), 1458–1492.

Xingliang Du and Jun Ma. 2022. AexPy: Detecting API Breaking Changes in Python Packages. In 33rd International Symposium on Software Reliability Engineering (ISSRE). 470–481.

Fabio Ferreira, Hudson Borges, and Marco Tulio Valente. 2024. Refactoring React-based Web Apps. Journal of Systems and Software 1 (2024), 1–36.

Stefanus A. Haryono, Ferdian Thung, David Lo, Julia Lawall, and Lingxiao Jiang. 2021. Characterization and Automatic Updates of Deprecated Machine-Learning API Usages. In International Conference on Software Maintenance and Evolution (ICSME). 137–147.

Raula Gaikovina Kula, Ali Ouni, Daniel M. German, and Katsuro Inoue. 2018. An Empirical Study on the Impact of Refactoring Activities on Evolving Client-Used APIs. Information and Software Technology 93, C (jan 2018), 186–199.

Maxime Lamothe, Yann-Gaël Guéhéneuc, and Weiyi Shang. 2021. A Systematic Review of API Evolution Literature. Comput. Surveys 54, 8 (Oct. 2021), 171:1–171:36.

Li Li, Tegawendé F. Bissyandé, Haoyu Wang, and Jacques Klein. 2018. CiD: Automating the Detection of API-related Compatibility Issues in Android Apps. In 27th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA) (ISSTA 2018). 153–163.

Tarek Mahmud, Meiru Che, Jihan Rouijel, Mujahid Khan, and Guowei Yang. 2024. APICIA: An API Change Impact Analyzer for Android Apps. In 46th International Conference on Software Engineering: Companion Proceedings. 99–103.

Gianluca Mezzetti, Anders Møller, and Martin Toldam Torp. 2018. Type Regression Testing to Detect Breaking Changes in Node.Js Libraries. In 32nd European Conference on Object-Oriented Programming (ECOOP). 1–24.

João Eduardo Montandon, Luciana Lourdes Silva, and Marco Tulio Valente. 2019. Identifying Experts in Software Libraries and Frameworks Among GitHub Users. In 16th International Conference on Mining Software Repositories (MSR). 276–287.

João Eduardo Montandon, Luciana Lourdes Silva, Cristiano Politowski, Ghizlane El Boussaidi, and Marco Tulio Valente. 2023. Unboxing Default Argument Breaking Changes in Scikit Learn. In 23rd IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM). 1–11.

João Eduardo Montandon, Luciana Lourdes Silva, Cristiano Politowski, Daniel Prates, Arthur de Brito Bonifácio, and Ghizlane El Boussaidi. 2025. Unboxing Default Argument Breaking Changes in 1 + 2 Data Science Libraries. Journal of Systems and Software (2025), 1–38.

João Eduardo Montandon, Silvio Souza, and Marco Tulio Valente. 2011. Study on the Relevance of theWarnings Reported by Java Bug-Finding Tools. IET Software 5, 4 (2011), 366–374.

João Eduardo Montandon, Marco Tulio Valente, and Luciana L. Silva. 2021. Mining the Technical Roles of GitHub Users. Information and Software Technology 131 (March 2021), 1–19.

Shaikh Mostafa, Rodney Rodriguez, and Xiaoyin Wang. 2017. Experience Paper: A Study on Behavioral Backward Incompatibilities of Java Software Libraries. In 26th International Symposium on Software Testing and Analysis (ISSTA). 215–225.

Lina Ochoa, Thomas Degueule, and Jean-Rémy Falleri. 2022. BreakBot: Analyzing the Impact of Breaking Changes to Assist Library Evolution. In 2022 IEEE/ACM 44th International Conference on Software Engineering: New Ideas and Emerging Results (ICSE-NIER). 26–30.

Lina Ochoa, Thomas Degueule, Jean-Rémy Falleri, and Jurgen Vinju. 2022. Breaking Bad? Semantic Versioning and Impact of Breaking Changes in Maven Central. Empirical Software Engineering 27, 3 (March 2022), 61.

A. Ponomarenko and V. Rubanov. 2012. Backward Compatibility of Software Interfaces: Steps towards Automatic Verification. Programming and Computer Software 38, 5 (2012), 257–267.

SonarSource. 2025. SonarQube. [link].

Stack Overflow. 2024. Stack Overflow Developer Survey. [link].

Kristín Fjóla Tómasdóttir, Mauricio Aniche, and Arie van Deursen. 2017. Why and How JavaScript Developers Use Linters. In 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE). 578–589.

Jiawei Wang, Tzu-Yang KUO, Li Li, and Andreas Zeller. 2020. Assessing and Restoring Reproducibility of Jupyter Notebooks. In 35th IEEE/ACM International Conference on Automated Software Engineering (ASE). 138–149.

Zejun Zhang, Yanming Yang, Xin Xia, David Lo, Xiaoxue Ren, and John Grundy. 2021. Unveiling the Mystery of API Evolution in Deep Learning Frameworks: A Case Study of Tensorflow 2. In 43rd International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP). 238–247.
Published
2025-09-22
BARROS, Gabriel Lima; BICALHO, João Vítor; MONTANDON, João Eduardo. DABCheck: A Plugin for Detecting Disruptive Changes in Default Arguments of Python Libraries. In: BRAZILIAN SYMPOSIUM ON SOFTWARE ENGINEERING (SBES), 39. , 2025, Recife/PE. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2025 . p. 921-927. ISSN 2833-0633. DOI: https://doi.org/10.5753/sbes.2025.11169.