当前位置:主页 > 管理论文 > 移动网络论文 >

基于程序分析的JavaScript程序缺陷检测与定位

发布时间:2020-04-15 08:25
【摘要】:随着Web应用的快速发展,JavaScript语言被广泛用于基于webview的手机端、基于electron的电脑端和基于Nodejs的服务端,在不同的平台上发挥着越来越重要的作用。JavaScript语言具有弱类型和动态性等特性,主要表现在动态添加和删除对象属性、动态代码生成、隐式类型转换等方面。为保证JavaScript应用程序的正确性、可靠性,现有研究主要集中在测试用例的设计、生成及自动执行上,针对函数参数不一致、空引用等常见缺陷,研究工作通常围绕着缺陷的检测、定位等展开。为了有效保障JavaScript应用质量,针对JavaScript函数参数不一致、空引用这两大缺陷,本文提出了基于程序分析的缺陷检测与定位方法:采用静态分析和概率类型推导相结合的方法对函数参数不一致情况进行检测;采用动态分析方法定位JavaScript空引用缺陷。这两项工作既可以帮助开发者在运行程序前检测函数参数不一致缺陷,又可以在发现缺陷后自动定位空引用缺陷。本文的主要贡献有:1)基于静态分析与概率类型推导相结合的方法,对JavaScript程序中最普遍的“函数参数不一致”缺陷进行检测,设计实现了工具原型JSParameter。针对JavaScript应用的参数类型不确定等困难,首先为JavaScript项目构造函数调用图,得到整个项目的函数定义-调用对;然后提取函数参数相关的信息,包括定义函数信息和调用函数信息,并将其与函数调用图结合,得到带信息的函数定义-调用对;根据提取的参数命名、注释、数据流等参数相关信息对参数类型进行概率推断,主要通过神经网络和数据流约束相结合的方法进行类型推断。具有准确推断参数类型、实时检测函数参数不一致等优点。2)为评估函数参数不一致检测方法的有效性,在13个开源项目上进行了实验,得到4776个函数形参-实参对。实验结果表明,对于参数类型不一致,JSParameter能准确检测出69%的不一致,针对不同项目内的检测,最大能达到100%的检测效果,最少有45%,中位数约达到80%。且该方法中的参数类型推断模块在top-1、top-3和top-5 F1-值分别是78.87%、87.23%和92.67%,好于著名的JavaScript类型推断工具JSNice,并与最新的工作NL2Type效果相当。3)基于动态分析和后向切片技术定位JavaScript“空引用”缺陷,设计实现了工具原型JSLocator。针对JavaScript语言的动态特性、过程间空值传播等困难,首先对进行缺陷定位的项目进行插桩,然后运行插桩后的代码并收集与空值有关的执行轨迹,最后通过后向切片分析技术对执行轨迹和源代码进行分析,并报告出空引用缺陷的根源位置。具有处理多类空值传播过程、准确定位JavaScript空引用缺陷等优点。4)为评估空引用缺陷定位方法的精度,在包含54个JavaScript空引用缺陷的数据集(12个真实缺陷、42个植入缺陷)中应用了JSLocator,JSLocator能准确定位48例(88.89%)缺陷的根源位置,而现有技术AutoFLox只能处理23例(42.59%)。JSLocator的运行时定位时间和源代码运行时间相比,平均开销大约是9倍,处于用户可接受的范围。
【图文】:

参数类型,示例


具有现实意义,能在程序运行前提供检测结果,以减少运行过程中缺陷的数量。逡逑在本章中,,JavaScript项目存在的函数参数不一致主要是指调用函数时传入逡逑的参数类型与定义的参数类型不一致。下面通过图3-1中的示例代码阐述函数参逡逑数类型不一致的具体细节。逡逑JSDoc16是一种具有特定格式的注释,可以通过jSDoc注释标注类型以及返逡逑回值的类型。如图3-1示例,该代码片段在定义函数《rCo/w?时使用了邋JSDoc逡逑I却,逡逑*逦Get邋the邋color邋based邋on邋whether邋there邋are邋errors/warnings...逡逑*逦@param邋{逦}邋totalErrors邋Total邋errors逡逑*逦@param邋{逦}邋totalWarnings邋Total邋warnings逡逑*逦^returns邋{int}邋The邋color邋code邋(0邋=邋green,邋1邋=邋yellow,邋2邋=邋red)逡逑V逡逑function邋renderColor(totalErrors,邋totalWarnings)邋{逡逑if邋(totalErrors邋!==邋0)邋{逡逑return邋2;逡逑}..逡逑}逡逑function邋renderResults(results)邋{逡逑return邋lodash.map(results,邋(result,邋index)邋=>邋resultTemplate({逡逑color:邋renderColor(result.errorCount

函数参数,静态分析,检测方法


3.2方法概述逡逑为了检测JavaScript程序存在的函数参数不一致缺陷,本章提出了基于静态逡逑分析与概率类型推断相结合的方法进行函数参数不一致检测,图3-2是本章提出逡逑的JavaScript函数参数不一致检测方法整体框架。逡逑(1)
【学位授予单位】:南京大学
【学位级别】:硕士
【学位授予年份】:2019
【分类号】:TP311.5;TP393.09

【相似文献】

中国期刊全文数据库 前10条

1 邢光荣,郑国梁,李宣东;一种基于格局的程序分析方法[J];软件学报;1994年05期

2 褚玉清;一个反动态跟踪程序的破译方法[J];小型微型计算机系统;1988年02期

3 李继灿;;超级监控程序分析[J];江汉石油学院学报;1988年03期

4 曲赞;;《风的地质作用》和《南极科学》[J];地质科学译丛;1988年03期

5 张贵贤 ,左志诚;第三讲 方法研究——程序分析[J];中国劳动科学;1989年04期

6 肖率;梁钢;;设计文摘两则[J];雷达与对抗;1989年01期

7 肖梦璐;;医疗器械的设计原则与程序分析[J];科技资讯;2017年23期

8 高方社;徐建城;李丛;孟凡鹏;;C语言程序分析器的设计与实现[J];电子设计工程;2014年04期

9 刘宗田;姜川;;程序分析的专家模型与方法学[J];计算机科学;1996年06期

10 刘磊,袁琦,金成植;基于信息流分析的程序分析技术[J];计算机研究与发展;1997年S1期

中国重要会议论文全文数据库 前9条

1 穆洋;;建筑电气设计的内容和程序分析[A];“中国建筑发展论坛——建筑与科技理论研讨会”论文集[C];2015年

2 缪力;张大方;杨学东;;计算有互斥机制的并发程序的程序切片[A];第十届全国容错计算学术会议论文集[C];2003年

3 王盟;王畅;初永越;魏巍;陈艳芳;师二兵;HUA LI;;基于MELCOR程序的PPOOLEX试验装置模拟分析[A];第十五届全国反应堆热工流体学术会议暨中核核反应堆热工水力技术重点实验室学术年会论文集[C];2017年

4 栾景昌;黄志诚;;某变速器总装配生产线标准化改善[A];标准化助力供给侧结构性改革与创新——第十三届中国标准化论坛论文集[C];2016年

5 任艳荣;刘玉标;王书河;;利用ABAQUS程序分析勘探二号海洋平台[A];第十二届全国结构工程学术会议论文集第Ⅲ册[C];2003年

6 高汝鑫;张亚辉;;蒙皮加强筋结构混合FE-SEA方法中频振动分析及其程序实现[A];中国力学大会-2015论文摘要集[C];2015年

7 许文;王继娜;;小议生产线平衡在汽车生产中的应用[A];第十二届河南省汽车工程科技学术研讨会论文集[C];2015年

8 屈万英;刘伟毅;;用DOE—2程序分析陕南地区城镇住宅节能的检验指标[A];城市化进程中的建筑与城市物理环境:第十届全国建筑物理学术会议论文集[C];2008年

9 张硕毅;张维婷;;建构中小企业信息系统委外服务厂商选择评估模式[A];第11届海峡两岸信息管理发展策略研讨会论文集[C];2005年

中国重要报纸全文数据库 前2条

1 本报记者 刘卉;对待检察工作要有权利分析和程序分析能力[N];检察日报;2015年

2 许邵庭 本报记者 冉斌;开门倾听“急盼愁” 基层问计定准星[N];贵州日报;2013年

中国博士学位论文全文数据库 前10条

1 汤震浩;程序分析与检测中的若干问题研究[D];南京大学;2018年

2 连瑞琦;具有可适应性的程序分析技术[D];中国科学院研究生院(计算技术研究所);2000年

3 涂明君;程序化的哲学阐释[D];中国人民大学;2008年

4 肖庆;提高静态缺陷检测精度的关键技术研究[D];北京邮电大学;2012年

5 李倩;Java程序指向分析研究[D];南京大学;2012年

6 章程;基于机器学习和程序分析相结合的程序调试技术研究[D];上海交通大学;2013年

7 马晓东;C程序内存错误静态分析技术研究[D];国防科学技术大学;2009年

8 凌翔;需求模型和程序间行为一致性的比较检测[D];武汉大学;2013年

9 匡宏宇;基于代码依赖分析的软件可追踪技术研究[D];南京大学;2017年

10 李建立;面向瞬时故障的可配置容错技术研究[D];国防科学技术大学;2013年

中国硕士学位论文全文数据库 前10条

1 查春柳;基于程序分析的JavaScript程序缺陷检测与定位[D];南京大学;2019年

2 何兴陆;面向隐私泄露分析的污点逆向传播技术[D];国防科学技术大学;2016年

3 刘峥;基于web的程序在线评测方法的研究[D];哈尔滨理工大学;2018年

4 王东东;多层次变更检测技术及其在架构持续演进中的应用[D];东南大学;2018年

5 张俊男;基于程序分析和神经网络语言模型的代码推荐研究[D];上海师范大学;2018年

6 张若愚;静态程序分析辅助的动态漏洞挖掘[D];上海交通大学;2010年

7 汪国俊;基于程序分析的B公司原料采购计划数字化管理研究[D];东北大学;2010年

8 李学博;基于UML的工艺程序分析系统的分析与设计[D];山东大学;2006年

9 曾丽燕;程序分析技术在某LCD电视产品测试线产能改善中的应用研究[D];上海交通大学;2014年

10 张弛;基于可配置程序分析的抽象解释方法研究[D];南京航空航天大学;2017年



本文编号:2628348

资料下载
论文发表

本文链接:https://www.wllwen.com/guanlilunwen/ydhl/2628348.html


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

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