关键词:
Python
静态分析
第三方库
API兼容性问题
版本演化
摘要:
Python丰富的开发生态提供了多种多样的第三方库,极大地提高了开发者的开发效率和质量.第三方库开发者通过对代码底层的封装,使得上层应用开发者只需调用API就可以使用相关功能,从而快速完成开发任务.然而,第三方库API不会保持恒定不变.由于缺陷修复、代码重构、功能新增等,第三方库代码会不断更新.更新后部分API发生了不兼容的更改,从而导致上层应用运行异常终止或者产生不一致的结果.因此, Python第三方库API的兼容性问题已成为目前开源生态中亟需解决的问题之一.目前已有相关研究工作对Python第三方库API兼容性问题展开研究,但兼容性问题原因的分类覆盖不够完全,无法输出兼容性问题的细粒度原因.为此,本文对Python第三方库API兼容性问题的表现形式和产生原因开展了实证研究,并针对性提出了Python不兼容API的静态检测方法.首先,本文针对flask库和pandas库的总共6个版本对,通过收集版本更新日志、运行回归测试相结合的方法,共收集108个不兼容API对.接着,本文对收集到的数据开展实证研究,总结了Python第三方库API兼容性问题的表现形式和产生原因.最后,本文提出了一种基于静态分析技术的Python不兼容API的检测方法,输出句法层面的不兼容API问题产生原因.本文在4个常用Python第三方库的共计12个版本对上进行了实验评估,结果表明本文方法具有良好的有效性、泛化性、时间性能、空间性能、以及易用性.