首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cppcheck静态代码分析器实际上能检测到“相对路径遍历(CWE-23)”或“缓冲区欠读(CWE-127)”这样的常见警告吗?

Cppcheck静态代码分析器实际上能检测到“相对路径遍历(CWE-23)”或“缓冲区欠读(CWE-127)”这样的常见警告吗?
EN

Stack Overflow用户
提问于 2019-08-10 17:01:57
回答 2查看 1.5K关注 0票数 1

我正在为我的研究工作在朱丽叶测试套房上工作,并在这些代码上应用一些静态分析器来生成警告。运行cppcheck之后,我发现它无法检测到manifest.xml文件(元数据)中提到的许多错误。我是否未能正确运行此软件,还是cppcheck无法检测到这些警告/错误?你以前面对过他们吗?

到目前为止,我在朱丽叶测试套房上使用了cppchecker。我要使用Clang,Veracode和Flawfinder,因为我第一次尝试失败了。

这是我使用的命令。

代码语言:javascript
复制
cppcheck --enable=all -q --xml -I testcasesupport/ testcases/ 2>out.xml

在给定的元数据manifest.xml文件中,一些示例错误是-

代码语言:javascript
复制
<?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没有涵盖朱丽叶测试套件的这些不寻常的错误吗?如果是的话,还有什么其他的静态分析器可以正确地检测到它们呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-10 17:25:01

cppcheck相当简单,而且远不完美。它可以在某些时候检测到一些问题。但并不是所有的问题都是这样。这或多或少地适用于任何工具。但是,除了cppcheck之外,还可以尝试使用clang和各种消毒液(asan、tsan、ubsan等)。

咯咯-整齐非常好,而且是免费的(参见支票清单)。

覆盖度是我使用过的最好的,但它相当昂贵。

对于运行时检查,地址消毒剂螺纹消毒剂未定义行为消毒剂都很棒。

当然,始终要从编译器中启用尽可能多的警告,并在启用和不启用优化以捕获不同bug的情况下进行构建。

票数 1
EN

Stack Overflow用户

发布于 2019-08-14 07:23:00

我是个Cppcheck开发人员。

我是否未能正确运行此软件,还是cppcheck无法检测到这些警告/错误?你以前面对过他们吗?

要了解Cppcheck可以检测到什么,可以使用以下命令:

代码语言:javascript
复制
./cppcheck --errorlist

在输出中查找"cwe“。

是因为cppcheck没有涵盖朱丽叶测试套件的这些不寻常的错误吗?如果是的话,还有什么其他的静态分析器可以正确地检测到它们呢?

我不记得什么CWEs的朱丽叶测试套件涵盖,但Cppcheck没有涵盖所有的CWEs。我不认为任何工具都能覆盖所有的CWEs。

cppcheck相当简单,而且远不完美。

我同意。我相信接吻原则。切普切克还远远不够完美。

但是,除了cppcheck之外,还可以尝试使用clang和各种消毒液(asan、tsan、ubsan等)。

我同意。使用几种工具是最佳实践。即使您使用最昂贵的工具,这也是最佳实践(例如,NASA使用各种昂贵的工具,也使用Cppcheck,因为Cppcheck检测到一些无法检测到的问题,反之亦然)。

我正在研究朱丽叶测试套件

在我看来,朱丽叶测试套房不是很好的。密码既奇怪又不现实。你的结论只对学术感兴趣。在真实代码上运行该工具。

我建议你扫描一些重要的开源项目。Cppcheck可以在Debian中找到数以千计的bug(未定义的行为),这个软件已经安装在数百万台计算机上。最新的稳定linux的状态并不那么好。:-(

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57444094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档