论文部分内容阅读
计算机技术的高速发展,各种编程语言层出不穷,使用主流编程语言的程序员数不胜数,他们的技术与编程规范参差不齐,代码质量不断下降,需要进行审核的代码不断增多,人工审查代码工作量不断增大,在这样的需求下,用程序审核代码应运而生。目前,国外对此项工程的发展比较早,已取得了很好的效果,大量缩短了审核代码的工作量,解放了不少劳动力,我国的起步比起外国来晚了许多,但也取得了不错的成绩,各大高校都做了不小的贡献,本篇文章也是介绍了对Java源代码进行静态分析的设计与实现。所谓静态分析,就是在无需执行源码的条件下对源码实行检测,与动态分析是相对的,动态分析就是在执行源码的条件下进行分析检测的。静态分析与动态分析相辅相成,共同使用方能取得最大效果。在静态分析过程中,首先是对源码使用前端编译,将源码中的字符流转换成中间表示形式。之后对其进行词法分析和语法分析,构建相应的语法树。再从语法树中提取其中的结点,构建CFG控流图。接下来分析数据流、约束,检查模块,最终达到对代码进行静态分析的目的。在设计系统的过程中,对系统的主要功能、数据结构、类属性与类之间的关系、接口等进行了详细的设计,为之后的实现提供了可靠的设计标准。在此基础上,对系统进行编码实现,其中CFG构建模块,数据流分析模块,缺陷分析模块,污点传播分析模块,代码不可达模块是本文主要介绍的模块实现,分别介绍了它们的实现原理,分析过程,算法等主要内容。完成以上的算法与实现,系统基本成型,在静态分析检测Java源代码中起到很大的作用,随着测试与改进,分析检测结果更加准确。下一步的主要工作是对静态分析系统进行优化处理,使其检测的更加准确,用时更少。