1. 为什么你需要生成预处理代码文件?
如果你在用Helix QAC做代码静态分析,肯定遇到过这种情况:在你自己电脑上分析得好好的,代码干干净净,结果发给客户或者换到另一台机器上,突然就冒出来一堆莫名其妙的警告和错误。或者,团队里某个同事的分析结果和你总是不一致,两个人为了一个规则到底该不该报错能争论半天。更头疼的是,有时候QAC报了一个错,你看着自己的源代码,怎么也想不通它为什么会这么理解你的代码。
这些问题,十有八九都跟“分析环境”有关。静态分析工具不是神仙,它分析代码时,需要“看到”和你编译器看到的一模一样的代码。这包括所有被#include进来的头文件内容、各种宏定义展开后的样子、以及分析时用到的具体规则配置。如果这些背景信息对不上,分析结果自然天差地别。
这时候,Helix QAC的“生成预处理代码”功能,就成了你的救命稻草。它不是什么高深莫测的黑科技,本质上就是让QAC在分析代码的同时,多干两件事:
- 生成一个
.c.i文件(或者对应你源码扩展名的.cpp.i等)。这个文件你可以理解为,QAC“眼中”的你的源代码。它已经把所有的#include指令替换成了实际的头文件内容,所有的宏都展开了,条件编译也处理完了。你看这个文件,就和QAC分析时“看”到的代码是完全一样的。 - 生成一个
.qac.via文件。这个文件是个“分析过程记录仪”,里面详细记录了分析这个文件时所有的上下文信息:用了哪个版本的QAC、加载了哪个规则配置文件(RCF)、头文件是从哪些路径找的、甚至用到了哪些具体的分析模块。
我把它叫做“代码分析的快照”或者“分析现场取证包”。有了这两个文件,你就能把分析现场完整地“打包”带走。无论是找技术支持排查问题,还是团队内部对齐分析环境,这两个文件一摆,所有隐藏的差异都无所遁形。
2. 手把手教你生成 .i 和 .via 文件
光说没用,咱们直接上手操作。这里分图形界面和命令行两种方式,我平时两种都用,看场景。
2.1 图形界面操作(适合日常开发和排查)
大部分时候,我们都是在QAC的图形界面里点按钮做分析。开启这个功能非常简单。
-
打开分析设置:启动Helix QAC,打开你的工程。点击菜单栏的
Analyze,然后选择Open Analysis Settings...。这个界面就是你控制QAC分析行为的“总指挥部”。 -
找到关键开关:在弹出来的“Analysis Settings”对话框里,你会看到很多标签页和选项。你需要找到
Generate Preprocessed Source for Analyzed Files这个选项。在2024.4版本里,它通常位于Output或General这类设置分类下。别担心找不到,它的名字很直白,就是一个复选框。 -
勾选并应用:把这个复选框勾上。它的意思就是“请为每一个被分析的文件,都生成对应的预处理源文件”。勾选之后,点击“OK”或“Apply”保存设置。
-
重新执行分析:这里有个非常重要的步骤,新手很容易忽略:你必须清除之前已有的分析结果,然后重新运行一次分析。 因为生成预处理文件这个动作,是发生在分析过程中的。如果你只是改了设置,然后对着旧的分析结果看,那是不会生成新文件的。在QAC里,你可以点击
Analyze->Clear Results


574

被折叠的 条评论
为什么被折叠?



