当前位置:主页 > 科技论文 > 软件论文 >

面向类型推导的Python类型标注分析

发布时间:2021-10-08 22:36
  作为动态语言的代表之一,Python因其代码简洁、开发迅速、拥有丰富的第三方库,在工业界大受欢迎。然而,由于缺少静态类型信息,许多软件工程活动(如程序理解、软件调试、静态缺陷检测等)无法有效地在Python程序中开展。为此,Python社区提出了静态类型标注提案,即允许开发者以标注形式表明程序实体的类型。类型标注不强制规定Python程序实体的类型,不作为代码的一部分被解释执行。类型标注可以被类型推导等其他分析方法和工具解析利用,进而提高分析精度。然而,类型标注能够在多大程度上帮助类型推导,以及在有限时间和资源条件下开发者该如何进行类型标注,尚未有相关工作展开研究。本文研究面向类型推导的Python类型标注,从类型标注的有效性分析和类型标注点推荐两个方面展开。主要工作包括:·对现有类型推导引擎进行了扩展,设计实现了一个支持类型标注的类型推导工具。该工具既支持开源标注集TypeShed作为外部标注的直接集成,也支持项目本身的内部标注。在集成了类型标注后,该工具可以有效地改善原有的类型推导结果。并借助一个开源类型标注集TypeShed,对外部类型标注在改善类型推导结果方面的有效性进行了实验... 

【文章来源】:南京大学江苏省 211工程院校 985工程院校 教育部直属院校

【文章页数】:70 页

【学位级别】:硕士

【部分图文】:

面向类型推导的Python类型标注分析


图3-1:系统框架图??

柱状图,项目类型,结果对比


对戶斤选取的11个Python项目进行实验分析,对比仅使用PySonar2和基于?f??TypeShed类型标注辅助两种类型推导过程的结果。如图3-5以柱状图的形式给?f??出了实验结果,柱状图表示能够推导出类型信息的程序实体数量,该敎量包含??了新增的类型信息和改善的类型推导信息。由图可以看出,在所有项目上,基??于TypeShed类型标注的推导结果都更好(柱状图更高),即能为更多_程序实??体推导出类型信息。??表3-2给出了更加详细的实验结果。在该表中,第二列为仅PySonar2能推??导出类型信息的程序实体数,第三列为添加类型标注后能推导出类型信息的??程序实体数量,第四和第五列分别为新增类型信息的程序实体数量和改善了类??型推导信息的程序实体数量,最后一列为类型信息改变的程序实体总数。其??中

框架图,分析实验,框架图


到此算法是否可以被用于交互式使用场景中。其次,评估方法给出的排序结??果,考察是否标注越靠前的变对类型推导结果的増益越大。最后,评估标注??数丨it对类型推导结果的影响,探究最高效率地进行类型标注。图4-4给出了本??章实验的框架图。仍然使用第三章采用的Python项目作为实验对象,但去掉了??zulip项目,因为在实验过程中发现,zulip带有较多无法处理的Python版本特??性,如print语句等。因此,本章使用10个Python开源项目作为实验对象。??4.4研究问题??类型标注可以增加类型推导引擎可获取到的类型信息,对某一个变V〔进行??标注,其效果不仅仅限制在这个被标注变量或者程序节点上,而且会通过数据??流的传递影响其他变量或者程序节点。本章通过数据流分析,量化这些变量之??间的依赖关系,提出了一种类型标注推荐方法TARank,从而得到变量的标注??价值排名。为了验证该方法的效率和有效性

【参考文献】:
期刊论文
[1]A study on the changes of dynamic feature code when fixing bugs: towards the benefits and costs of Python dynamic features[J]. Zhifei CHEN,Wanwangying MA,Wei LIN,Lin CHEN,Yanhui LI,Baowen XU.  Science China(Information Sciences). 2018(01)
[2]TPython:一种扩充的Python语言[J]. 余超,周天琳,周晓宇,陈林,徐宝文.  计算机与数字工程. 2009(05)

硕士论文
[1]Python动态特性对软件维护的影响研究[D]. 王蓓蓓.南京大学 2016



本文编号:3425100

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3425100.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户52bb9***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com