gpt4 book ai didi

linux - clang 静态分析器的一些检查器在 linux 下不工作

转载 作者:太空狗 更新时间:2023-10-29 11:19:27 25 4
gpt4 key购买 nike

首先我输入命令:

clang -cc1 -analyzer-checker-help 

如下列出所有可用的检查器。

alpha.core.BoolAssignment       Warn about assigning non-{0,1} values to Boolean variables
alpha.core.CastSize Check when casting a malloc'ed type T, whether the size is a multiple of the size of T
alpha.core.CastToStruct Check for cast from non-struct pointer to struct pointer
alpha.core.FixedAddr Check for assignment of a fixed address to a pointer
alpha.core.PointerArithm Check for pointer arithmetic on locations other than array elements
alpha.core.PointerSub Check for pointer subtractions on two pointers pointing to different memory chunks
alpha.core.SizeofPtr Warn about unintended use of sizeof() on pointer expressions
alpha.cplusplus.VirtualCall Check virtual function calls during construction or destruction
......................................

然后我选择两个(BoolAssignment和VirtualCall)进行测试,代码如下:

int f1(){
int a=5;
short b=4;
bool a1=a;//maybe warn
bool b1=b;//maybe warn
if(a1&&b1)return 1;
return 0;
}
class M{
public:
virtual int GetAge(){return 0;}
};
class P:public M{
public:
virtual int GetAge(){return 1;}
P(){GetAge();}//maybe warn
~P(){GetAge();}//maybe warn
};

但是什么也没有发生,怎么了?这是我调用支票的命令

scan-build --use-analyzer=/usr/bin/clang clang++ test.cpp -c -o test.o

最佳答案

alpha.core.BoolAssignment 不是默认检查。您必须使用 -enable-checker 选项启用它。所以命令是:

scan-build --use-analyzer=/usr/bin/clang -enable-checker alpha.core.BoolAssignment clang++ test.cpp -c -o test.o

关于linux - clang 静态分析器的一些检查器在 linux 下不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19590302/

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