计算机科学 ›› 2017, Vol. 44 ›› Issue (4): 223-228.doi: 10.11896/j.issn.1002-137X.2017.04.048
魏苗,吴毅坚,沈立炜,彭鑫,赵文耘
WEI Miao, WU Yi-jian, SHEN Li-wei, PENG Xin and ZHAO Wen-yun
摘要: 由于JavaScript自身的语言特性,JavaScript程序中可能存在与运行时变量类型不匹配的缺陷,这类缺陷往往难以被察觉,只有在运行时报错后才能发现故障,而人工检查代码时需要开发者花费大量的时间通过调试的方法来定位查找代码缺陷。提出了一种静态分析JavaScript的方法来检查可能的运行时类型不匹配缺陷。该方法首先基于HTML和JSP页面对于JavaScript文件的引用将整个项目中的JavaScript文件进行分组;接着以分组为单位对JavaScript文件进行分析和变量类型推断,再检查每个分组中是否存在多类型属性;然后对这种多类型属性的使用进行检查;最后对检查结果进行报告,并给出修复建议。实现了一个用于自动检测JavaScript中多类型属性缺陷的工具,并通过在真实JavaScript项目中的实验证明了该方法的可行性,与已有的JavaScript分析方法相比,该方法的效果更优,提升了有关缺陷查找的效率与有效性。
[1] stackoverflow .http://stackoverflow.com. [2] esprima.http://esprima.org. [3] escope.https://github.com/estools/escope. [4] FELDTHAUS A,MLLER A.Semi-automatic rename refac-toring for JavaScript[J].AcmSigplan Notices,2013,48(10):323-338. [5] LI S S,CHENG B Q,LI X F,et al.JavaScript Typing System with Prediction[J].Journal of Computer Research and Development,2012,49(2):421-431.(in Chinese) 李世胜,程歩奇,李晓峰,等.基于预测的JavaScript类型系统研究[J].计算机研究与发展,2012,49(2):421-431. [6] DAMAS L,MILNER R.Principal type-schemes for functional programs[C]∥Proceedings of the 9th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages.ACM,1982:207-212. [7] GUARNIERI S,LIVSHITS B.GATEKEEPER:Mostly StaticEnforcement of Security and Reliability Policies for JavaScript Code[J].Washington Sammyg,2009,7(4):151-168. [8] MADSEN M,LIVSHITS B,FANNING M.Practical Static A-nalysis of JavaScript Applications in the Presence of Frameworks and Libraries[C]∥Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering.ACM,2012:499-509. [9] WEI S,RYDER B G.Practical blended taint analysis for JavaScript[C]∥Proceedings of the 2013 International Symposium on Software Testing and Analysis.ACM,2013:336-346. [10] JENSEN S H,MLLER A,T HIEMANN P.Type Analysis for JavaScript[M]∥Static Analysis.Springer Berlin Heidelberg,2009:238-255. [11] VARDOULAKIS D.CFA2:Pushdown Flow Analysis for Hi-gher-Order Languages[D].Boston:Northeastern University,2012 [12] OCARIZA F,BAJAJ K,P ATTABIRAMAN K,et al.An Empirical Study of Client-Side JavaScript Bugs[C]∥2013 ACM/IEEE International Symposium on Empirical Software Enginee-ring and Measurement.IEEE Computer Society,2013:55-64. [13] OCARIZA F S,PATTABIRMAN K,MESBAH A.Vejovis:Suggesting Fixes for JavaScript Faults[C]∥International Conference on Software Engineering.2014:837-847. [14] OCARIZA F S,PATTABIRMAN K,MESBAH A.DetectingInconsistencies in JavaScript MVC Applications[C]∥2015 IEEE/ACM 37th IEEE International Conference on Software Engineering (ICSE).IEEE,2015:325-335. [15] FELDTHAUS A,SCH ,FER M,et al.Efficient construction of approximate call graphs for JavaScript IDE services[C]∥International Conference on Software Engineering.IEEE Press,2013:752-761. [16] collegesvis.https://github.com/nerdyworm/collegesvis. [17] p4wn.https://github.com/douglasbagnall/p4wn. [18] wander-mesh.https://github.com/notlion/wander-mesh. [19] flow.http://flowtype.org. |
No related articles found! |
|