我正在为我的研究工作在朱丽叶测试套房上工作,并在这些代码上应用一些静态分析器来生成警告。运行cppcheck之后,我发现它无法检测到manifest.xml文件(元数据)中提到的许多错误。我是否未能正确运行此软件,还是cppcheck无法检测到这些警告/错误?你以前面对过他们吗?
到目前为止,我在朱丽叶测试套房上使用了cppchecker。我要使用Clang,Veracode和Flawfinder,因为我第一次尝试失败了。
这是我使用的命令。
cppcheck --enable=all -q --xml -I testcasesupport/ testcases/ 2>out.xml在给定的元数据manifest.xml文件中,一些示例错误是-
<?xml version="1.0" encoding="utf-8"?>
<container>
<testcase>
<file path="CWE127_Buffer_Underread__CWE839_connect_socket_01.c">
<flaw line="111" name="CWE-127: Buffer Under-read"/>
</file>
</testcase>
<testcase>
<file path="CWE114_Process_Control__w32_char_connect_socket_03.c">
<flaw line="124" name="CWE-114: Process Control"/>
</file>
</testcase>
.
.
.
</container>但是,我的output.xml文件生成的cppchecker并不存在大部分这些错误。output.xml文件中的大多数错误属于'CWE-398‘错误,这是一个样式错误。但是cppcheck可以检测常见的错误,比如“数组超出绑定”或类似的错误。
是因为cppcheck没有涵盖朱丽叶测试套件的这些不寻常的错误吗?如果是的话,还有什么其他的静态分析器可以正确地检测到它们呢?
发布于 2019-08-10 17:25:01
发布于 2019-08-14 07:23:00
我是个Cppcheck开发人员。
我是否未能正确运行此软件,还是cppcheck无法检测到这些警告/错误?你以前面对过他们吗?
要了解Cppcheck可以检测到什么,可以使用以下命令:
./cppcheck --errorlist在输出中查找"cwe“。
是因为cppcheck没有涵盖朱丽叶测试套件的这些不寻常的错误吗?如果是的话,还有什么其他的静态分析器可以正确地检测到它们呢?
我不记得什么CWEs的朱丽叶测试套件涵盖,但Cppcheck没有涵盖所有的CWEs。我不认为任何工具都能覆盖所有的CWEs。
cppcheck相当简单,而且远不完美。
我同意。我相信接吻原则。切普切克还远远不够完美。
但是,除了cppcheck之外,还可以尝试使用clang和各种消毒液(asan、tsan、ubsan等)。
我同意。使用几种工具是最佳实践。即使您使用最昂贵的工具,这也是最佳实践(例如,NASA使用各种昂贵的工具,也使用Cppcheck,因为Cppcheck检测到一些无法检测到的问题,反之亦然)。
我正在研究朱丽叶测试套件
在我看来,朱丽叶测试套房不是很好的。密码既奇怪又不现实。你的结论只对学术感兴趣。在真实代码上运行该工具。
我建议你扫描一些重要的开源项目。Cppcheck可以在Debian中找到数以千计的bug(未定义的行为),这个软件已经安装在数百万台计算机上。最新的稳定linux的状态并不那么好。:-(
https://stackoverflow.com/questions/57444094
复制相似问题