背景
因开发编写Linux平台C/C++代码,出现指针未正确释放、类成员指针变量在构造函数未初始化等情况导致进程core。虽然我们通过cppcheck扫描过,但是效果不是很好,想自己写脚本扫描;
代码示例
free p;
p = null;
free p;
p=NULL;
free p;
p = NULL ;
delete p;
p = NULL;
free *p;
期望运行结果
free *p; //期望能被扫描出来
**我的解答思路和尝试过的方法 **
shell编写正则表达式扫描代码,扫描分为两步:
1、匹配出 free和delete的代码,记录为T行
2、检查T+1行,是否没有匹配 = NULL;的情况,
符合以上两个条件的行进行输出
\S*(?:free|delete)\s+.*;\s*\n{1,}\s*.*?(?!=\{0,\}NULL\b\{0,\})
实际上没有扫描到,麻烦大家能否给我看看,谢谢; 正则表达式网站 https://regex101.com/r/zhSa64/1
free *p;//说明这行指针p被释放,但是没有把p指向NULL,发生悬空指针【导致程序core】
我想要达到的结果
free *p; //期望能被扫描出来