[发明专利]一种基于抽象语法树的全局变量多处赋值异常检测方法在审
申请号: | 202111254179.X | 申请日: | 2021-10-27 |
公开(公告)号: | CN114115889A | 公开(公告)日: | 2022-03-01 |
发明(设计)人: | 庞存辰;靳争;孙弘扬;沈杰;方霞;李勇 | 申请(专利权)人: | 中国航发控制系统研究所 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06Q10/06 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 柏尚春 |
地址: | 214063 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 抽象 语法 全局变量 赋值 异常 检测 方法 | ||
本发明公开了一种基于抽象语法树的全局变量多处赋值异常检测方法,包括以下步骤:(1)设置异常场景规则及风险等级;(2)设置配置信息,描述当前控制软件中的速率组信息;(3)将C语言编码的控制软件源代码转换为抽象语法树;(4)从抽象语法树中提取控制软件源代码中的函数定义实现及函数调用的相关信息;(5)根据异常场景定义,检测符合异常场景定义的软件代码信息;(6)显形符合异常场景定义的软件代码信息。本发明将控制软件源代码转换为语法树,通过语法树提取代码中的多速率交互信息,检测并显形符合异常场景定义的软件信息,提高了控制软件的质量。
技术领域
本发明涉及C语言软件代码静态分析,特别是一种基于抽象语法树的全局变量多处赋值异常检测方法。
背景技术
航空发动机控制软件(FADEC软件)通常采用C语言编码。控制任务运行在不同的速率组中。不同速率组中产生的全局变量可能被用于其他速率组的任务中。
在多速率交互控制软件中对同一个全局变量进行多处赋值是导致航空发动机控制软件运行异常的主要原因之一。对全局变量多处赋值异常进行检测是保证航空发动机控制软件正确性不可缺少的重要环节。通过全局变量多处赋值异常检测,可以在软件实现阶段发现全局变量多处赋值异常导致的数据交互错误带来的软件缺陷,及时采取措施修复相关缺陷,保证航空发动机控制正常。
传统的全局变量多处赋值异常检测采用人工代码审查的方式,该方法依赖于代码审查人员的个人经验和精力,不仅效率低,且缺陷检出率也低。因此有必要采用自动化的方法进行全局变量多处赋值异常的检测。
发明内容
发明目的:本发明的目的是提供一种基于抽象语法树的全局变量多处赋值异常检测方法,从而提高控制软件的质量。
技术方案:将C语言编码的航空发动机控制软件源代码转换为抽象语法树,从配置文件中获取控制软件的速率组信息,从抽象语法树中获取不同速率组中运行的函数以及每个函数内部对全局变量进行赋值的代码段。对符合全局变量多处赋值异常原则的函数及变量信息进行显形。
本发明提供了一种基于抽象语法树的全局变量多处赋值异常检测方法,包括以下步骤:
(1)设置异常场景规则及风险等级;
(2)设置配置信息,描述当前控制软件中的速率组信息;
(3)将C语言编码的控制软件源代码转换为抽象语法树;
(4)从抽象语法树中提取控制软件源代码中的函数定义实现及函数调用的相关信息;
(5)根据异常场景定义,检测符合异常场景定义的软件代码信息;
(6)显形符合异常场景定义的软件代码信息。
步骤(2)中所述的速率组信息包括有哪些不同的速率组、各个速率组的名称及优先级、各个速率组的顶层入口函数名称集合。
步骤(5)和(6)中所述的软件信息包括相关的函数名称、变量名称。
所述步骤(1)包括以下步骤:
(1.1)在某一速率任务中对某个全局变量进行了多处赋值,且在更高速率组的函数中使用该全局变量作为函数输入;风险等级为高;
(1.2)在某一速率任务中对某个全局变量进行了多处赋值,且未在更高速率组的函数中使用该全局变量作为函数输入;风险等级为低;
(1.3)在不同速率组中的不同函数均对同一个全局变量进行赋值;风险等级为高;
(1.4)函数对某个全局变量进行了赋值,且该函数在两个或者两个以上不同的速率组中运行;风险等级为高。
所述步骤(2)包括以下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国航发控制系统研究所,未经中国航发控制系统研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111254179.X/2.html,转载请声明来源钻瓜专利网。