欢迎来到天天文库
浏览记录
ID:31431707
大小:103.50 KB
页数:4页
时间:2019-01-09
《基于clang编译器的程序结构分析器设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于Clang编译器的程序结构分析器设计 摘要:国内的软件测试研究目前还基本停留在比较基础的理论方法和管理方法上,没有在软件测试技术上取得突破。基于当前流行的Clang编译器前端,在抽象语法树生成的过程中运用不同的规则标识各语句结构,同时进行中间结构的改造和校正,得到一个有效的、高正确性的程序结构分析器。程序结构分析器的设计为实现一个有理论基础的综合性白盒测试工具奠定了坚实的底层数据支持。 关键词:Clang编译器;抽象语法树;程序结构分析;软件测试 中图分类号:TP311.1文献标志码:A文章编号:1006-8228(2016)10-54-03 Designofprogr
2、amstructureanalyzerbasedonClangcompiler ZhouRui (Shaanxiinstituteoftechnology,Xi'an,Shaanxi710300,China) Abstract:Atpresent,theresearchofsoftwaretestinginChinaisstillinthebasicstageoftheoreticalmethodsandmanagementmethods,andithasnotmadeanybreakthroughinthesoftwaretestingtechnology.Basedont
3、hefrontendofcurrentpopularClangcompiler,usingdifferentrulestoidentifythestructureofstatementintheabstractsyntaxtreegeneration4process,andtocarryoutthereformandcorrectionoftheintermediatestructure,aneffectiveprogramstructureanalyzerwithhighaccuracyisobtained.Thedesignofprogramstructureanalyzerl
4、aysasolidunderlyingdatasupportforrealizingatheorybasedcomprehensivewhiteboxtestingtool. Keywords:Clangcompiler;abstractsyntaxtree;programstructureanalysis;softwaretesting 0引言 程序结构分析器的实现离不开一个高效的编译前端作支持,而编译技术到目前为止在各领域得到了广泛的应用。从银行的管理软件到高性能计算,大多数都是高级语言进行编写完成,然后通过静态或动态编译最终在计算机上运用。目前比较流行的编译器是在App
5、le上使用的LLVM/Clang编译器、由GNU开发的程序语言编译器GCC用于Linux系统下编程、IBM公司研制开发的Java编译器Jikes、Inter公司开发的OpenResearchCompile,还有常见的MSVC、Borlandc、myeclipse和jbuilder等等[3-4]。4 程序中的缺陷检测是编译器的一项重要任务,也是目前研究的热点和探讨的核心问题。要识别各种错误包括:变量未定义、类型检验、语义错误以及内存泄漏和违规等,就必须在程序分析方面投入更多精力进行设计研究。在保证可靠性和安全性的同时也要减少分析工具的误报,从而避免给程序员带来不必要的麻烦,节约时间
6、,提高效率。因此,编译器技术中静态或动态的程序分析对识别程序中的错误和缺陷有着重要的作用,不过现在面临的问题还不少,出现了许多新的挑战[5]。 1clang的静态分析器 现有的Clang静态分析器已经完成了过程内分析(Intra-ProceduralAnalysis)和路径诊断(PathDiagnostics)两个大模块。其中已实现的过程内分析功能包括源代码级别的控制流图、流敏感的数据流解析器、路径敏感数据流分析引擎、死存储检查和接口检查。而路径诊断信息模块已经提供路径诊断客户端(提供开发新bug报告的抽象接口、独立于生成过程的可视报告、HTML诊断报告)、缺陷报告器(为前一个
7、模块服务)[6]。 1.1静态分析概述 静态分析(staticanalysis)[1]是指在不执行的情况下对代码进行评估的过程。静态分析非常强大,这是因为它允许对多种可能性进行快速参考量。一个静态分析工具能够探查大量“如果……将会……”的假定情况,而不必为所有这些假定进行计算,进而执行这些代码。静态分析技术非常适合于识别安全问题。 ⑴静态分析工具彻底而一致地进行检查,而不管程序员的检查角度和代码的复杂程度。 ⑵通过对代码本身的检查,静态分析工具往往能指出安全问
此文档下载收益归作者所有