cppcheck指令常用选项

cppcheck指令常用选项,第1张

默认情况下,只显示错误消息,可以通过 --enable 命令启用更多检查

启用警告消息:

启用性能消息:

启用信息消息:

由于历史原因 --enable=style 可以启用警告、性能、可移植性和样式信息。当使用旧 XML 格式时,这些都由 style 表示:

启用警告和性能消息:

启用 unusedFunction 检查。这不能通过 --enable=style 启用,因为不会在库中正常工作。

启用所有消息:

提供一个源文件或源文件目录以排除从检查。这只适用于源文件源文件包含的头文件不匹配。目录名与路径的所有部分相匹配。

允许Cppcheck报告,即使分析是不确定。这个选项有假阳性。每个结果在你知道它是否存在之前,必须仔细调查好或坏。

默认情况下,如果确定,Cppcheck 只显示错误消息。如果使用 --inconclusive ,当分析不确定时,也会写错误消息。

选择XML文件版本。目前只有版本2是可用的。

很多时候,会希望将结果保存在一个文件中,可以使用 shell 的管道重定向错误输出到一个文件:

选项 -j 用于指定需要使用的线程数,例如,使用 4 个线程检查文件夹中的文件:

Cppcheck 可以生成 XML 格式的输出。有一个旧的 XML 格式(version 1)和一个新的 XML 格式(version 2)。如果可以,请使用新版本。

旧版本保持向后兼容性。它不会改变,但有一天可能会被删除。使用 --xml 支持这种格式。

新版本修复一些旧格式的问题。新格式可能会在 cppcheck 的未来版本中更新,并带有新的属性和元素。用于检查文件并以新的 XML 格式输出错误的示例命令:

Class Base 是测试代码,检测内存越界的代码是下面这段代码

#define CHECKNU 6893\\除0外任意值;

#define PRECHECK_FIELD(i) int __precheck##i

#define POSCHECK_FIELD(i) int __poscheck##i

#define IN1T_CHECK(o,i){\

(o)->__precheck##i=CHECKNU\

(o)->__poscheck##i=CHECKNU\

}

#define CHECK(o,i){\

if((o)->__precheck##i!=CHECKNU ||(o)->__poscheck##i!=CHECKNU){\

printf("%s:%d,memory access out of range with checknu

pre %d,pos %d”,__FILE__,__LINE__,(o)->__precheck##i,(o)->__poscheck##i)\

}\

)

说一下他的思路,在每次申明内存块之前后各申明一个标志变量,并赋特定值,这样理论上在内存块里他们是连续的。看下面的语句

PRECHECK_FIELD(0)

char mem[1024]

POSCHECK_FIELD(0)

在每次使用自己定义的内存块mem前后,都检查一下,看之前定义的标志变量有没有被更改,如果有,则内存被越界 *** 作了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7961876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存