首页 帮助中心 美国云服务器 C/C++ 静态代码检测工具分享
C/C++ 静态代码检测工具分享
时间 : 2024-10-14 10:27:41 编辑 : 华纳云 阅读量 : 121

Cppcheck可以用于C/C++ 代码的静态分析,帮助开发者来检测代码中的错误。Cppcheck能检测出多种类型错误,如语法错误、未使用函数、内存泄露、未初始化的变量等。另外,Cppcheck还支持用户自定义规则,让开发者能根据自己需求定制Cppcheck的行为。

含错误、警告、样式、可移植性、性能、信息等。这些选项可通过命令参数来进行启用或者禁止,来定制Cppcheck的行为。如需要错误和警告可通过enable=warning,error参数来运行Cppcheck。

Cppcheck的检查范围如下。

未定义行为:如死指针、零除、整数溢出、无效的位移操作数、无效转换、STL无效使用、内存管理、空指针解引用、越界检查、未初始化变量、写入const数据等。

安全性:Cppcheck可以检测一些常见的安全漏洞,比如缓冲区错误、不当访问控制、信息泄露等。

编码安全性:Cppcheck支持多种编码标准,如 Misra C 2012、Misra C++ 2008、Cert C、Cert C++ 等。

其他检查:Cppcheck能有很多其他检查,还可以从命令行应用程序中检索所有已实施检查的当前列表:

# get list of checks

cppcheck --doc

 

# get list of error messages

cppcheck --errorlist

检查是否有64位可移植性:

- 将地址分配给/从 int/long

- 从函数返回时将地址从/转换为整数

检查断言,如果断言语句中有副作用,会发出警告。

检查自动变量:指向变量的指针仅在变量处于作用域内时才有效。检查:

- 返回指向自动或临时变量的指针

- 将变量的地址分配给函数的有效参数

- 返回对局部/临时变量的引用

- 返回函数参数的地址

- 指针参数的可疑赋值

- 函数参数的无用赋值

布尔值检查:

- 对布尔值使用增量

- 将布尔表达式与 0 或 1 以外的整数进行比较

- 使用关系运算符比较返回布尔值的函数

- 使用关系运算符比较布尔值与布尔值

- 在按位表达式中使用 bool

- 条件中的指针加法(忘记了取消引用或需要指针溢出才能使条件为假)

- 将布尔值分配给指针或浮点数

- 从具有布尔返回值的函数返回 0 或 1 以外的整数

检查 Boost 的无效使用:

- BOOST_FOREACH 期间的容器修改

Cppcheck可允许通过命令行来启用或禁用特定检查器。可用--enable=参数来启用特定的检查器,或者使用--disable=参数来禁用特定的检查器。

如,想启用内存相关的检查用以下命令:

cppcheck --enable=warning,performance,portability,information,missingInclude --suppress=missingIncludeSystem yourfile.cpp

这个命令会启用所有警告,性能,可移植性,信息和缺失包含的检查,但是会抑制系统确实包含的警告。

要根据需求选择启用或禁用哪些检查器,不是所有检查器都适合所有情况,根据代码和需要检查问题来选择欢迎继续关注华纳云

华纳云 推荐文章
Windows云主机磁盘空间不足如何处理? 如何使用红锁Redis实现分布式锁 如何用Terraform配置和管理CDN域名 云服务器中更改etc/hosts 配置 Windows云主机登录后使用IE浏览器无法访问网站解决方法 使用工具远程登录美国Linux服务器的教程 TCP连接超时机制及策略 云服务器中设置巨型帧和修改MTU的指南 CentOS 7云主机中如何自制ISO镜像文件 Linux中yum命令含义及应用
客服咨询
7*24小时技术支持
技术支持
渠道支持