- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于AST的程序静态分析工具的研究与实现
图 2.1 代码检测实现的总体结构
2012-07-1A9S##T##############2012-07-19#####2#0#1#2-07-19########
Re s e a rch a n d Im p le m e n ta tio n o f S o ftw a re S ta tic An a lyzin g To o l Ba s e d o n Ab s tra ct
S yn ta x Tre e
(北京科技大学)陈
平 王成耀
CHEN P ING WANG CHENGYAO
摘要: 本 文 给 出 了 以 抽 象 语 法 树 为 基 础 的 软 件 静 态 分 析 工 具 的 体 系 结 构 , 介 绍 了 该 工 具 中 各 个 模 块 的 设 计 与 实 现 方 法 , 着 重
于 规 则 库 的 设 计 , 以 及 利 用 定 义 好 的 规 则 实 现 自 动 化 的 代 码 检 测 的 过 程 。 关键字: 静态分析; 代码检测; 抽象语法树
中图分类号:TP311
文献标识码:A
Abstr act:This paper presents a software static analyzing tool based on Abstract Syntax Tree 。 In this paper , the architecture of the
tool is briefly described 。 The implementation of the tool is told of and emphasis is placed on the structure of rules definition and
Auto- testing process 。
Key wor ds:Static analyzing, Code detection , Abstr act syntax tr ee
技
术 创 新
主要用来存放所有待分析的 java 源文件的成员定义、使用
范围以及引用信息。分析时, 在语法分析器中创建一个符号表 的实例, 并记录所有定义信息。
(3) 程序结构/变量解析器
用来提取除符号表构造以外的静态信息, 进一步的完善符 号表信息的填充。
(4)代码自动检测模块
主要 是 实现 利 用 系统 定 义 的规 则 库 或者 是 用 户 自 定 义 的 规则进行代码的自动检测。
(5)结果显示模块
本工 具 以统 计 表 、饼图 、表 格 形式 来 展 现每 个 源 程 序 违 反 规则的信息, 对出现的各种异常按照级别进行染色和统计, 以 及到代码视图中对应源代码的跳转。
2.1 Java 语法分析器
本工具使用的语法分析器 由 JavaCC(Java Compiler Compil- er)根 据 Java 语 法 自 动 生 成 的 。JavaCC 是 一 个 开 源 的 软 件 , 是 Java 语法分析器的生成工具。JavaCC 是采用递归下降分析的、 支持 LL(K)文 法 的 编译 器 的 编译 器 , 主 要功 能 是 读入 一 个 文法 规范文件(.jj 文件), 将它 转 换 成可 识 别 是否 与 该 文法 相 匹 配的 Java 程序。
该语法分析器主要由字符流管理器、词法分析器和语法分 析器组成。实现时, 字符流管理器从 Java 文件中读取一个个字
符, 将经 过 转义 处 理 后的 字 符 传给 词 法 分析 器 ; 词 法分 析 器 根
据词法规则将字符组成一个单词, 将整个单词(包括它的属性和 方法)传 给语 法 分 析器 ; 然 后 由语 法 分 析器 根 据 Java 语法 进 行 语法分析 , 将传 来 的 单词 按 照 语法 规 则 组成 语 法 单位 , 按 语 法 单位所赋予的语法进行语句分析。语法分析的对象是一个 Java
概述
1
静态分析是指不实际运行程序, 而是通过检查和阅读等手
段来发现错误并评估代码质量的软件测试技术, 也称为静态测
试技术。传统上,
静态分析是一种劳动密集型的手工分析技
术, 是由明确定义的规则引导的一个系统的有规律的过程。这
些严格的要求造成代码检查难度大, 这一过程需要自动化工具 来处理。
目前的静态分析工具在规则定义上各有侧重点, 要么就侧 重于编码风格上的检测, 要么是侧重于 bug 模式的检测等等, 本工具利用 JavaCC 产生的语法分析器, 对它进行扩展, 使之能 实现对不同类型的规则进行比较全面的代码检测。
系统的总体结构
2
该静态分析工具总体结构如图 2.1, 主要由语法分析器, 符
号表, 规则库, 自动代码检测库, 结
文档评论(0)