C / C ++免费替代林特?
我感兴趣的是一个免费的工具,可以像Lint那样静态检查我的C ++代码。 任何提示?
尝试cppcheck
,在这里find: http : //cppcheck.sourceforge.net/
下面是它可以执行的一些检查的一个例子,或者我用它来检查:
- 数组索引越界
- 内存/资源泄漏
- 不正确的新/删除
- 未能在派生类上放置虚拟析构函数
- 不匹配的分配和释放
- 取消分配一个释放的指针
- 在释放/释放后使用variables
- 尺寸不匹配
- 调用
strtol
或strtoul
无效的基数 - 重叠数据缓冲区
- 未签名的部门; 结果可能是错的
- 不寻常的指针算术
- 返回指向本地数组variables的指针
- 相同的迭代器与两个容器一起使用
- 危险使用擦除
- 推回或pushfront之后,迭代器可能是无效的
- 缓冲区超限
-
strncat
危险使用,可能的缓冲区溢出
也许像这样的列表是你在找什么:
http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
它看起来像你将最充分地使用Splint或Uno 。
列表的另一个工具:谷歌cpplint.py ,谷歌的C + +风格指南提到 。 这是非常具体的Google,但是。
我个人尝试cppcheck(v1.4),发现它绝望。
例如。 此示例正确检测到数组越界:
int a[4]; for (int n = 0; n < 5; n++) { a[n] = n; }
但是这个例子没有被发现:
int a[4]; int z = 4 + 1; for (int n = 0; n < z; n++) { a[n] = n; }
夹板 ?
你可能想看看这个项目:
- Vera ++基于用户定义的规则(用Tcl,Python或Lua编写)
很less没有免费的:
- QAC ++
- Coverity公司
- Klocwork的
- Abraxas CodeCheck – 听到各种意见…
我最近读了Mozilla使用的DeHydra和Pork ,虽然我没有尝试过。
尝试nsiqcppstyle ,一个用python编写的C ++风格的检查器。