[发明专利]一种基于程序分析的Node.JS代码片段环境依赖性的自动推断方法在审
申请号: | 202011374137.5 | 申请日: | 2020-11-30 |
公开(公告)号: | CN114579130A | 公开(公告)日: | 2022-06-03 |
发明(设计)人: | 张卫丰;黄泽龙;周国强 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210023 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 程序 分析 node js 代码 片段 环境 依赖性 自动 推断 方法 | ||
本发明为一种基于程序分析的Node.JS代码片段环境依赖性的自动推断方法:首先,根据libraries.io数据集中的SourceRank构建已知npm包的知识库;其次,使用静态分析,动态分析和关联规则挖掘的组合来发现有关包依赖性的信息,并根据其互相之间的关系建模为相互依赖图,使用图形数据库存储;然后,对于给出的新的Node.JS代码片段,解析目标代码并提取所有导入资源的列表,将其映射回一组可以安装的软件包,再利用一种用于遵循安装顺序的直接依赖和传递依赖性的推理算法,查找到的依赖项进行正确排序,得到最后的返回结果。
技术领域
本发明属于计算机技术领域。尤其是软件技术领域。本发明提出了一种基于程序分析的Node.JS代码片段环境依赖性的自动推断的方法,能够有效地针对当前在各大代码交流平台共享的代码无法运行、难以复现的问题,从而促进代码技术交流、提高开发效率。
背景技术
Node.JS是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。因此在几年的时间里,Node.JS逐渐发展成一个成熟的开发平台,吸引了许多开发者。有许多大型高流量网站都采用Node.JS进行开发,此外,开发人员还可以使用它来开发一些移动Web框架。
Node.JS的成功原因除了它采用了前端js相同的语法,直接吸引了一大波前端开发者作为初始用户之外,它内置的包管理器npm也居功至伟。npm是世界上最大的软件注册表,每星期大约有30亿次的下载量,包含超过600000个包(package)。来自各大洲的开源软件开发者使用npm互相分享和借鉴。包的结构使开发者能够轻松跟踪依赖项和版本。npm能够很好的管理Node.JS项目的依赖,也使得开发者发布自己的包变的异常容易。这样一来,不论你使用别人的包,还是自己发布包给别人使用,成本都不大。
当前,由于代码开源社区越来越繁荣,代码开源在开发者圈中越来越被关注,诸如StackOverFlow、GitHub Gist和Jupyter社区等平台注册用户非常多且活跃,其上已经累积了成千上万的代码共享片段。这相当于为用户提供了一个非常有用的应用商店,所有人都可以自由地下载所需要的代码片段或项目,这为开发者提供了巨大便利。
Node.JS的大规模应用扩大了开发者间交流的需求。诸如StackOverFlow、GitHubGist和Jupyter社区等平台为用户提供了一个交流技术、共享代码的途径。在这些平台的诸多问题的解答中,回答者通常会附加相应的代码片段。这些代码片段通常经过了回答者的验证,可以用于解决问题。
虽然代码共享提供了许多便利,但这些共享的代码通常存在着无法运行、难以复现的问题。据研究,Gist平台上超过50%的代码在原生环境下无法顺利运行。虽然存在着代码本身有错误的可能,但通常来说,主要是不同用户的运行环境不一致所导致的,其中相关依赖库缺失是最主要的问题。C.Parnin的调查显示,开发人员为代码配置其运行环境依赖的时间消耗通常不小于20分钟。因此,Nodejs代码片段环境依赖性的自动推断的方法对促进技术交流、提高开发效率具有很强的现实意义。
发明内容
本发明的主要工作是提出一种基于程序分析的Node.JS代码片段环境依赖性的自动推断方法。首先,本发明关注的是Node.JS代码片段中的函数调用和包含该函数声明的依赖包之间的关系。其次,本发明使用脱机知识库来正确推断目标脚本的依赖关系。此知识库包含包,其版本和资源以及它们之间的关系。它是通过对Libraries.io数据集中的已知的包应用静态和动态分析而构建的。其中,静态分析枚举包的已知资源以供以后检索,动态分析收集有关传递依赖性的信息。然后,公共Python项目中依赖关系的关联规则挖掘利用了开发人员生成的系统级传递依赖关系的知识。最后,针对给出的陌生的代码片段,在脱机知识库的基础上,使用了遵循安装顺序的直接依赖和传递依赖的推理算法。针对以上问题,本发明的工作和贡献如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011374137.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:灌料装置
- 下一篇:蛋白质Ghd7在调控植物抗低氮性中的应用