news 2026/3/16 3:32:00

21、安全关键系统的代码覆盖与静态分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
21、安全关键系统的代码覆盖与静态分析

安全关键系统的代码覆盖与静态分析

代码覆盖指标

代码覆盖测量的挑战

在安全关键系统的嵌入式软件开发中,代码覆盖的测量存在诸多困难。一方面,语句和分支覆盖难以准确衡量。例如,一组测试可能在C源程序中实现了100%的分支覆盖,但在生成的汇编代码中,分支覆盖可能仅为40%。另一方面,C语言中的内联代码和宏也可能导致不合理的覆盖值。若内联代码包含分支,该分支在代码插入的某些实例中可能被执行,而在其他实例中则不会。若测量覆盖的分析工具在内联发生后查看代码,就会报告存在未覆盖的代码,尽管实际上并不存在。宏的情况也是如此。

实现代码覆盖

有多种工具可用于生成至少能提供良好语句和分支覆盖的测试用例,开源的KLEE符号执行程序就是其中之一。在进行符号执行时,它会进行必要的分析,以确定驱动程序沿每条路径执行所需的变量值。以计算最大公约数的程序为例,KLEE生成了以下测试用例:
-m = 2147483647, n = 2147483647 (GCD = 2147483647)
-m = 50790404, n = 54463393 (GCD = 1)
-m = 679738981, n = 340287488 (GCD = 1)

这些测试用例分别对应不同的执行路径,形成了一个基础,可提供100%的入口点、语句、分支和基本路径覆盖。由于决策的简单性,它们还提供了100%的修正条件判定覆盖(MC/DC)。在笔记本电脑上,KLEE只需几秒钟就能推导出这些测试用例。

然而,自动生成的测试用例虽能提供出色的各种类型的覆盖,但在实际经验

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/16 9:55:52

QQ空间数据备份神器:永久珍藏青春记忆的完整方案

还记得那些年在QQ空间里留下的青春印记吗?从第一条青涩的说说,到与好友的温馨互动,这些数字化的记忆承载着我们最真实的情感。随着时间流逝,你是否也曾担心这些宝贵的回忆会悄然消失?现在,一款强大的QQ空间…

作者头像 李华
网站建设 2026/3/15 17:24:23

风之舞谱:3D气象可视化魔法书

风之舞谱:3D气象可视化魔法书 【免费下载链接】cesium-wind wind layer of cesium 项目地址: https://gitcode.com/gh_mirrors/ce/cesium-wind 在地球的舞台上,风是永不谢幕的舞者。你是否曾想象过,能够亲眼目睹大气层中那场永不停歇的…

作者头像 李华
网站建设 2026/3/13 16:05:43

BetterNCM插件终极指南:彻底释放网易云音乐隐藏潜能

BetterNCM插件终极指南:彻底释放网易云音乐隐藏潜能 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在忍受功能单一的网易云音乐吗?你的音乐播放体验即将迎来…

作者头像 李华
网站建设 2026/3/13 12:32:15

体制内笔杆子的三个办公工具推荐!

2025年了还有人不用AI来提效吗? 如果你还没用上智能AI工具,真的不知道比别人少摸鱼多少时间。今天介绍四个非常适合用于体制内笔杆子、职场牛马的办公提效的AI工具,覆盖大大小小的办公使用场景了!以后工作摸鱼再也不用提心吊胆了&…

作者头像 李华
网站建设 2026/3/13 18:53:30

16、Docker 容器镜像构建与管理全解析

Docker 容器镜像构建与管理全解析 1. Docker 隔离特性与安全实践 在使用 Docker 时,我们可以像推送软件一样推送网络栈的更改。例如,将带有配置的镜像推送到主机,并使用特权容器进行更改。由于我们是所推送配置的作者,且容器不是长期运行的,这类更改也易于审计,所以风险…

作者头像 李华
网站建设 2026/3/15 13:15:19

33、Docker Swarm集群服务编排:任务约束与全局服务部署

Docker Swarm集群服务编排:任务约束与全局服务部署 1. 任务运行约束 在集群中,我们常常需要控制应用程序在哪些节点上运行。这可能是为了将工作负载隔离到不同的环境或安全区域,利用特殊的机器功能(如GPU),或者为关键功能预留一组节点。Docker服务提供了一种名为“放置…

作者头像 李华