[发明专利]一种基于Clang程序结构的控制流程图自动生成方法有效
| 申请号: | 202010428445.5 | 申请日: | 2020-05-20 |
| 公开(公告)号: | CN111708572B | 公开(公告)日: | 2022-11-25 |
| 发明(设计)人: | 王周恺;马维纲;王锋;黑新宏;陈浩;张毅坤 | 申请(专利权)人: | 西安理工大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75 |
| 代理公司: | 西安弘理专利事务所 61214 | 代理人: | 弓长 |
| 地址: | 710048 陕*** | 国省代码: | 陕西;61 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 clang 程序结构 控制 流程图 自动 生成 方法 | ||
本发明公开了一种基于Clang程序结构的控制流程图自动生成方法,具体为:首先,逐行读入数据库中的Clang程序结构分析器的分析结果;分析结果包括程序编码块,本行程序代码所在的行数,本行代码相对于程序起始的偏移量,本行代码所占字节数,本行代码中的关键字相对于程序起始的偏移量以及本行中的关键字信息所占字节数;对程序块编码分析;最后控制流程图绘制,输出svg文件。利用该方法能够很好地解决不同语句之间的嵌套问题,同时可以分析逻辑复杂的程序,并正确地生成其控制流图,解决了程序流程的可视化问题,进而为基于流程图的程序分析和程序理解提供良好的基础。
技术领域
本发明属于计算机技术领域,具体涉及一种基于Clang程序结构的控制流程图自动生成方法。
背景技术
控制流程图是软件设计和测试的基础。理解一个源程序的首要任务就是理解其逻辑结构。在程序分析领域,控制流图作为刻画程序的控制结构的工具,在优化编译器设计、程序测试和程序结构复杂度分析中应用广泛。是一种揭示和掌握封闭系统逻辑结构的有效方式。
随着目前软件规模的日益扩大,程序模块逻辑越来越复杂,传统的流程图虽然可描述程序内部的控制流,但已经不能满足实际的工程应用,通过控制流程图来理解程序和测试软件也越来越困难。
传统的流程图连线错综交叠,没有直接将程序语句表示在图元中,忽略了流程图中的过程细节,只体现了程序的控制结构,缺乏对跳转语句等特殊状态的处理,当程序较大时显得过于庞杂,无法让人清晰的把握控制流走向。
发明内容
本发明的目的是提供一种基于Clang程序结构的控制流程图自动生成方法,解决了现有方法中不同语句之间的嵌套问题,实现了从源程序到控制流图的自动生成。
本发明所采用的技术方案是,一种基于Clang程序结构的控制流程图自动生成方法,具体按照以下步骤实施:
步骤1,逐行读入数据库中的Clang程序结构分析器的分析结果;
分析结果包括程序编码块,本行程序代码所在的行数,本行代码相对于程序起始的偏移量,本行代码所占字节数,本行代码中的关键字相对于程序起始的偏移量以及本行中的关键字信息所占字节数;
步骤2,程序块编码分析;
步骤3,控制流程图绘制,输出svg文件。
本发明的特点还在于,
步骤2中,具体为:
步骤2.1,根据程序编码块判断基本显示结构,基本显示结构分别有For循环结构、While循环结构、Do-while循环结构、Switch-Case结构、If判断结构和Sequence结构,在此基础上,创建6张线性表,用于存储上述6种基本显示结构;
步骤2.2,记录、存储读入的基本显示结构,并分析它们之间的关联关系;
基本显示结构和程序编码块的第三和第四位之间的对应关系分别为:
For循环开始:30,For循环结束:32;While循环开始:40;While循环结束:42;Do-while循环开始:50;Do-while循环结束:54;Switch选择开始:20,Switch选择结束(有default):24,Switch选择结束(无default):25;Case结构开始:21;If判断开始:10,If判断结束:14;Else结构开始:12;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安理工大学,未经西安理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010428445.5/2.html,转载请声明来源钻瓜专利网。





