- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈基于GCCC静态分析器开发应用
浅谈基于GCCC++静态分析器开发应用
摘要:目前,最主流的开发语言之一就是C++,越来越多的工具都使用C++语言来开发了。因为C++具有高效等特性,所以得到了很广泛的运用。但是不可避免的,在开发软件程序方面,它也存在着一些缺陷。因此,基于开源编译器GCC的C++静态分析器就被开发出来了,可以审查代码,发现缺陷,保证代码的安全和可靠。本文通过对C++静态分析器的C++的语言的缺陷、检查规则以及编译器的内容进行阐述,综合讲解了其开发与应用。
关键词:GCC C++静态分析器开发应用
中图分类号:TP274.1文献标识码:A文章编号:1007-9599 (2012) 07-0000-02
C++是一种设计语言,它可以实现面向对象的程序设计,如今,它所应用的领域越来越广泛了,又由于它的复杂性,运用它所开发出来的软件具有一些安全隐患,这就要求对软件有一个测试系统,C++静态分析器在其中起到核心的分析作用并且选择GCC这一成功的开源软件作为其平台。
一、C++静态分析器开发的背景
(一)C++语言的应用领域
C++是当今最为广泛使用的程序设计语言之一,在商业软件开发中广为应用,在其他部分行业中也运用广泛。
游戏:C++的效率的原因是很重要的。
科学计算:科学计算的领域内,使用最多的语言之一即为FORTRAN。但是,最近这些年,在FORTRAN这一领域,颇多的应用了先进的数值计算库以及泛型编程的优势。网络软件:网络通信库在C++方面是很成熟的,跨平台,重量级,在这其中是最具有代表性的,这个库是C++语言当中,最重要的成果,在许多重要的企业、部门甚至是军方都有应用。 操作的系统:在这个领域之内,最主要使用的编程语言就是C语言。但是,凭借着它的兼容性,所面对的对象开始在该领域崭露头角。 设备驱动程序:同样是因为这个语言的高效率。 同时,C++语言还被运用到移动(手持)设备,嵌入式系统,教育与科研,以及航天领域等等。
(二)C++语言的缺陷
优秀的,面向对象程序所设计的就是语言C++语言,它的由来是C语言基础上所发展出来的。因为C++的独特性,它在很多的领域得到了很广泛的运用。
C++语言过于复杂化在业界已经成为了共??:一个指针就使C++比关键字数目相同的语言复杂许多,导入模板后各种应用精巧的应用使这门语言进一步复杂化了。C++标准库的苍白:C++标准库里甚至不覆盖正则表达式和XML,显得很单一,并且C++语言已经无法简化了。
另外:简单的说,还有以下几点缺陷:
指针,违例的数组:析取空的指针,将数组维度之外的数组元素访问出来,将缓冲区中小的字符复制或是串过。
变量没有初始化:在对变量做初始化之前,用它删除指针之后还选取这个指针。
更加多见的是,在不需要使用delete的时候一旦使用了delete;对象中的构造函数,就会将虚函数调用了,没有提供构造函数。还存在整数大小的错误以及逻辑错误。
三、开源编译器GCC的平台
(一)编译器的简单介绍
一九八五年,杰出的美国程序设计师理查德·斯托曼,它发起并且也创建了世界上第一个非营利性的,计算机的软件组织,也就是软件基金会。创新的技术上,为公众共享软件产品的开发,是这个组织的最高宗旨。由此推进了‘GNU计划’,它的其中一个产品就是GCC编译器。
GCC是一套由 GNU 开发的编程语言编译器,它的原名为 GNU C 语言编译器。它是一套自由软件,是以 GPL和LGPL许可证所发行的,也是自由的类的标准编译器,也就是Unix和苹果计算机MacOSX操作系统。GCC通常被人们认作为是,跨平台编译器的一个标准。GCC原本也只是对C语言有处理的能力。随着GCC的扩展的速度的加快,就变成了可处理的C++,在这之后也也就可以处理Fortran,Pascal,Objective-C、Java, 和Ada等的其他语言。
GCC的有两个重要的设计目标,其一是在不同硬件平台建造支持的编译器的时候,可以最大程度用代码复制使用,这就是它的无关性的硬件。其二是形成可执行代码的高质量,这也是代码的优化性。基于这些,产生了中间语言RTL。
(二)工作流程
从原代码到直接能被计算机或者是虚拟机所执行的目标代码的翻译过程即为编译。
由包含的入口点的名字以及地址和外部的调用的机器代码,它们所组成的目标文件即为典型的编译器输出。同组的目标文件,不一定需要是在同一编译器中所产生的,但是,使用的编译器所采用的输出格式必须是要同一样的,这样链接在一起就可以合并,并且生成出可执行的程序。同时也是可以由用户直接执行的。
主要负责解析输入的源代码是编译器的前端,它是由语法分析器以及语意分析器来一起工作的。
文档评论(0)