默认情况下,只显示错误消息,可以通过 --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前后,都检查一下,看之前定义的标志变量有没有被更改,如果有,则内存被越界 *** 作了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)