您可能会有疑惑,作为一个静态代码分析工具,QAC也可以检查运行时问题吗?
那我们可以很负责任的告诉您,通过QAC的Dataflow功能,QAC可以帮您提前检查出一些运行时问题,例如:
通常这些运行时错误,都需要使用动态测试来发现。
然而,执行动态测试(如单元测试)需要先写好测试用例才能执行,函数的复杂度越高,需要考虑的情况就越多,要准备的测试用例也就越多。
等到写好满足覆盖率的测试用例,做完动态测试并发现这些问题,再要修改往往已经忘记当初的代码是怎么写的了。
修复完成后还要继续重复这个流程,直到所有测试都能按预期通过。
通过在QAC中开启Dataflow,不需要提供测试用例,你可以在开发的早期就发现这些可能存在的问题,并提前实施修复,避免之后的循环。
如何开启数据流分析
QAC的默认配置下,数据流分析是不启用的,你需要主动添加Dataflow组件并开启它。
添加的方法如下:
如果你的分析需要用到语言合规模块(如MISRA C),这些模块往往会依赖Dataflow组件,并在你添加时,提示并加入Dataflow组件:
开启DataFlow需要先选择qac或qacpp模块,并选择数据流分析级别:
QAC提供了5个分析深度级别,表示不同的 -prodoptions 选项预设,控制了分析超时时间。级别越高则结果越是可靠,分析时间也往往会更长。
如果勾选了“Inter TU analysis“,则会开启跨文件单元的联合分析,这可以帮助减少QAC关于“possible”消息的报告。
这时再进行分析,你就会看到QAC执行的Dataflow分析结果了:
推荐的数据流分析使用方法
开发者桌面/提交前:编码规范 + 单文件,不开 dataflow,秒级反馈
每日构建(nightly) :全项目 depth 3 左右,平衡速度与深度
里程碑/发布/认证:在高性能的构建服务器上跑 depth 5 + df::inter=5 + Inter TU Analysis,产出可靠分析证据,减少超时和“possible”消息
安全相关模块:单独建工程,恒定 depth 5,不参与降级
希望进一步了解有关QAC数据流分析的使用,欢迎通过电话或邮件联系我们!
Copyright © 2023 汉宜电子科技(上海)有限公司 All Rights Reserved 沪ICP备2023002859号-1