[发明专利]一种基于Makefile自动编译技术实现的软件源文件静态分析方法有效
申请号: | 201510418857.X | 申请日: | 2015-07-16 |
公开(公告)号: | CN105094939B | 公开(公告)日: | 2018-05-01 |
发明(设计)人: | 蔡志旻;沈峰;朱敏杰;姚幸涛 | 申请(专利权)人: | 南京富士通南大软件技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 南京钟山专利代理有限公司32252 | 代理人: | 马晓辉 |
地址: | 210012 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 makefile 自动 编译 技术 实现 软件 源文件 静态 分析 方法 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种基于 Makefile 自动编译方法的静态分析自动化的方法。背景技术
软件开发中,为了保证软件的质量,一般会采取多种方式来进行软件品质的确保:编译器分析,静态分析,单元测试,功能测试,系统测试等。众所周知,问题发现的越早,修正解决问题的代价就越低。静态分析就是一种在软件工程的前期,编码完成之后就能实施的有效手段。
静态分析的技术一般会包含:预处理模块、词法分析模块、语法分析模块、控制流分析模块和数据流分析模块, 所用到这些模块的技术和编译技术存在很大的相似性。源文件进行编译时用到的参数,和静态分析时需要用到的参数信息,大部分是相同的。静态分析工具为了能够检查出更多的词法错误,语法语义的错误,就需要获得每个源文件的更多更详尽的编译参数,来构建词法/语法信息更完整的模型。
随着软件工程的规模越来越大,源文件也越来越多;而且每个源文件编译的时候会有不同的编译参数,导致工程越来越复杂。这种情况下,对源文件个数庞大且参数复杂的工程进行静态分析, 就需要花费很大人力对每个源文件逐一进行信息提取,逐一进行静态分析。
发明内容
本发明要解决的技术问题是现有的软件工程源文件静态分析工作量巨大, 需要花费很大人力对每个源文件逐一进行信息提取,逐一进行静态分析,分析过程复杂,对基于多种编译器的工程源文件无法实现自动化的静态分析。为解决上述技术问题,本发明采用的技术方案是:一种基于 Makefile 自动编译技术实现的软件源文件静态分析方法,包括以下步骤:步骤一:调用 Make工具对自动化编译所用的 Makefile 工程文件内容进行解析,获得待编译的源文件的编译命令行,截获该编译命令行,并暂停 make 的执行权;步骤二:将截获的编译命令行格式化,将编译命令行分离成编译命令和编译选项;通过编译命令进行编译器匹配;能匹配到编译器的,解析编译命令行,获取静态分析命令行;不能匹配到编译器的,跳转步骤四;步骤三:将执行权交给交给获取到的静态分析命令行, 由静态分析命令行执行编译源文件的静态分析工作; 静态分析完成后,将解析结果输出到log 文件中,并将执行权限交还给 Make;步骤四:Make 工具重新获得执行权限后,继续执行当前的编译命令行;步骤五:当 Make 工具获取到下一条编译命令行时,则跳转到步骤一;否则,跳转到步骤六;步骤六:将静态分析结果文件格式化成 CSV 格式;根据解析结果,将存在问题的解析项插入到对应源文件的对应位置;输出静态分析过程中存在问题的源文件列表。
现在软件行业大都使用 Makefile 来管理自己的工程,源文件信息和编译信息都记录在 Makefile 中,然后利用 make 命令工具,就能自动的进行编译。这种情况下,静态分析工具就可以通过对 Makefile 信息的解析,获取静态分析所需要的编译参数;make 工具的执行过程是解析 Makefile,对管理的所有源文件按指定的顺序逐个进行编译,这个过程是自动进行的;静态分析工具也需要对每个源文件逐个进行分析,本发明方法通过采用 Make 工具和静态分析工具交叉获得执行权的方式,在 make 工具按顺序针对每一个源文件生成一条编译命令并逐条执行的同时,完成静态分析的工作。本方法把编译命令替换成静态分析命令,把不需要的参数去掉,同时添加静态分析需要的参数;然后由 make 逐条执行替换过的命令行,无需用户对静态编译工具进行额外的学习,只需执行一条简单的解析命令(LINUX 平台)或鼠标一键操作(WINDOWS 平台) ,即可完成代码的静态分析工作,大大提高了工作效率和静态分析工具的使用性。
具体实施方式
本发明公开了一种基于 Make 命令,实现自动化调用 PGRelief静态分析软件工程源文件的方法。本发明的方法所述处理方法包括:借助 make 命令对自动化编译所用的Makefile 工程文件进行解析;生成每个源文件的编译命令;对生成的命令信息进行解析,生成当前文件所对应的静态分析命令;对当前文件进行静态分析,并保存解析结果;返回 make 命令处理,执行编译命令编译当前源文件。
本发明支持 WINDOWS 和 LINUX 两个平台, 能够对基于多种编译器的工程源文件进行自动化的静态分析,无需用户对静态编译工具进行额外的学习,只需执行一条简单的解析命令(LINUX 平台)或鼠标一键操作(WINDOWS 平台) ,即可完成代码的静态分析工作,大大提高了工作效率和静态分析工具的使用性。本实施例采用 Linux 平台 GCC 编译器,并以 32 位 Linux 系统 ppc-linux-gcc 为例:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京富士通南大软件技术有限公司,未经南京富士通南大软件技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510418857.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:分布式环境下虚拟机异常恢复方法
- 下一篇:一种软件升级方法及装置