当声明结构数组时,CPPCHECK停止对整个文件的分析

cppcheck stops analysis of whole file when array of struct is declared

本文关键字:文件 结构 声明 数组 CPPCHECK      更新时间:2023-10-16

我正在使用 cppcheck

运行静态代码分析。

我有一个cpp源文件,该文件作为" null指针删除"等错误

文件中有一块代码。在类中声明结构

class Example{
    public:
        typedef struct {
            int num;
        }MyStruct;
};

当声明结构数组

Example::MyStruct st_arr[5];

cppcheck一旦达到此代码就可以停止分析,并且不会进一步报告文件中的其他错误。

但是,如果我只是声明结构变量

Example::MyStruct st;

很好。

因此,当创建结构数组(在类中声明(时,CPPCHECK停止了分析。这是Cppcheck的问题吗?

我是CPPCHECK开发人员。

我也看到了如此奇怪的行为。这不是故意的。我将调查。

最好的问候,丹尼尔·玛雅马基(DanielMarjamäki(

可以配置大多数静态分析工具,以不报告库标题中的错误。您可能必须配置CPPCHECK以识别标头,例如通过定义被视为库文件的路径。他们通常还会在源代码中解析特殊评论,可用于抑制代码区域中的错误,例如在包含之前抑制错误,然后重新启用之后。工具文档中描述了这种工作的工作方式。

这些工具还具有定义抑制以丢弃错误的能力,例如误报。这也可用于抑制第三方代码的错误。

CPPCHECK手册章节"第8章"answers"第9章。库配置"应解释如何执行此操作。如果您对配置有特定的问题,则可以发布更详细的问题。