gpt4 book ai didi

c - 如何检查 C 源文件是否缺少返回错误检查?

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:50 26 4
gpt4 key购买 nike

假设你有这样一段代码:

int* a = (int*) malloc(20);
a[3]=2;
pid_t q = fork();
if(!q) {
char *a[5];
for (q=4; ;--q) {
if(q<0) break;
a[q]="q";
}
execve("q", a, NULL);
}
if(q) kill(q, 9);
free(a);

它使用 gcc -Wallclang -Wall 构建时没有任何警告,使用 cppcheck --enable=all 时不发出警告。

Hovewer 忽略了对 mallocforkexecve 的错误返回值的检查,这显然会导致问题。如何静态检查 C 源代码是否存在此类错误?

最佳答案

如果找不到专门的解决方案,我会转向 findgrep 来搜索对 malloc 的每个调用,以及您认为重要的任何其他函数以检查返回的值(value)。我会一次检查每一个,然后用我的眼睛快速扫描结果。

find . -type f -name '*.[ch]*' -exec grep -HnA2 'malloc' {}  \; 

如果您怀疑超过两行的尾随上下文更适合捕获返回值测试,请将传递给 grep 的 A2 增加到 A3

关于c - 如何检查 C 源文件是否缺少返回错误检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25492891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com