一句话:将 Java 静态分析工具迁移到 Python,挖掘 ML 系统中的重复代码变更模式并开展开发者调研。
ML 软件系统在演化过程中存在大量重复性代码变更。现有重复变更检测与重构挖掘工具主要面向 Java 等语言,Python 生态尤其是 ML 代码缺乏支持,而许多 ML 开发者又缺乏专业软件工程训练。为弥补这一缺口,作者提出将 Java 静态分析工具生态适配并复用到 Python 的方法,并据此改造了 RefactoringMiner 与 CPATMiner 两个软件演化工具。基于这些工具,作者对 59 个 ML 系统开展了首个细粒度代码变更模式研究,并调研了 253 名开发者。研究给出了有实证依据、可操作的工具构建建议,并发布工具供研究者使用。
Similar to software evolution in other software systems, ML software systems evolve with many repetitive changes. Despite some research and tooling for repetitive code changes that exist in Java and other languages, there is a lack of such tools for Python. Given the significant rise of ML software development, and that many ML developers are not professionally trained developers, the lack of software evolution tools for ML code is even more critical. To bring the ML developers’ toolset into the 21st century, we implemented an approach to adapt and reuse the vast ecosystem of Java static analysis tools for Python. Using this approach, we adapted two software evolution tools, RefactoringMiner and CPATMiner, to Python. With the tools, we conducted the first and most fine-grained study on code change patterns in 59 ML systems and surveyed 253 developers. We recommend empirically-justified, actionable opportunities for tool builders and release the tools for researchers.