一、静态代码检测神器Cppcheck
可以检测各类静态的C++代码问题,
官网:
Cppcheck - A tool for static C/C++ code analysis
官网还提供了各种集成开发环境的(插件)支持。
下面随便看几个例子:
类初始化不完整
#include <iostream>
using namespace std;
class Test
{
public:
int data1;
Test() {}
};
用cppcheck扫描一下:
cpp官方的例子,静态or可推理的数组/内存越界:
void foo(int x)
{
int buf[10];
if (x == 1000)
buf[x] = 0; // <- ERROR
}
void foo2(int x)
{
int buf[10];
buf[x] = 0; // <- ERROR
if (x == 1000) {}
}
二、Clang-Tools 代码检测及修改
Clang工具包,与Cppcheck比它还提供suggestion。还是刚才的代码
- 对应构造函数未全部初始化,给的建议是添加初始化列表,
- 推荐使用default关键字替代空的构造函数
- 推荐使用array以及at替代[]
它使用的标准更贴近Modern C++ 使用的也是GSL最新的核心准则
三、valgrind heob 检查内存泄漏
Valgrind是非常强大的内存检测工具,但是不支持Windows平台,对应的windows的版本就是heob,都是Google开发的。这里有一个简单的例子
#include <iostream>
using namespace std;
int main()
{
char *ptr=(char *)malloc(1000);
return 1;
}
检测结果:
非常准确~