cppcheck和cpplint的介绍与实例化使用

对于大型C/C++项目,一般是分模块开发的方式进行,代码量数十万或者更多。由于代码量的激增以及开发人员众多,代码出现bug的概率也随之增加。其中一部分问题是非执行过程引起的静态问题,如内存泄露、内存越界、野指针、逻辑模糊、死锁等等,在发布代码前可以借助一些检测工具进行代码分析,以排除静态bug。除了检查代码静态bug外,还可以判断代码复杂度、代码质量、代码执行效率等等,作为提高代码质量的依据。

静态代码分析的作用

静态代码分析是指无需运行被测代码,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。统计证明,在整个软件开发生命周期中,30% 至 50% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。

在C++项目开发过程中,因为其为编译执行语言,语言规则要求较高,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。所以C++ 静态代码分析工具能够帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省开发成本。

静态代码分析工具的优势 :

  1. 帮助代码设计人员更专注于分析和解决代码设计缺陷。
  2. 减少在代码人工检查上花费的时间,提高软件可靠性并节省开发成本。
  3. 自动执行静态代码分析,快速定位代码隐藏错误和缺陷。

主流业内C++静态代码分析工具横向对比

序号名称跨平台性是否收费流行度能否自定义及扩展主要特点能否与SonarQube或GitLab集成
1cppcheckWindows/linuxfree主流能扩展、能自定义侧重点于检查代码的逻辑 支持的一些检查包括:
1.变量检查
2.数组越界的界限检查
3.类检查(如:未使用的函数、变量初始化和内存复制)
4.Open Group中弃用或替代函数的使用
5.异常安全检查,如内存分配使用、析构函数检查等
6.内存泄漏,例如由于未进行解分配而丢失范围
7.资源泄漏,如忘记关闭文件句柄
8.标准模板库函数和习语的无效使用
9.使用unusedFunction选项消除死代码 杂项文体和性能错误 …
(说明:其在静态扫描工具比对中,在内存泄漏的检测中表现较好)
能直接与sonar-cxx集成
2cpplintWindows/linuxfree主流能扩展、能自定义侧重于代码风格的检查,检查代码是否符合 Google C++ Style Guide可定制规则,一般与 cppcheck 配合使用,能覆盖绝大部分静态代码检测项能直接与sonar-cxx集成

3 动态代码扫描工具
valgrind dr.memory

4 实例
cpplint使用:
在这里插入图片描述

cppcheck使用:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cppcheck 是一个开源的静态代码分析工具,用于检查 C/C++ 代码中的各种错误和潜在问题。它可以帮助开发者在编译之前发现并纠正代码中的常见错误,以提高代码质量和可靠性。 下面是 Cppcheck 的一些主要特点和功能: 1. 静态代码分析:Cppcheck 使用静态分析技术来检查代码,而无需实际运行程序。它会对代码进行语法分析、数据流分析和控制流分析,以发现潜在的问题。 2. 错误检查:Cppcheck 可以检测出诸如空指针解引用、内存泄漏、不正确的类型转换、未初始化的变量、数组越界访问等常见错误。 3. 代码风格检查:除了错误检查外,Cppcheck 还可以帮助开发者遵循一致的代码风格和最佳实践。它可以检查缩进、命名约定、注释等方面的风格问题,并提供相应的建议。 4. 多平台支持:Cppcheck 可以在多个平台上运行,包括 Windows、Linux 和 macOS。它支持对 C 和 C++ 代码的分析,并与各种开发环境和构建系统集成。 5. 定制化配置:Cppcheck 提供了丰富的配置选项,可以根据项目的具体需求进行定制。开发者可以选择要检查的错误类型、排除特定文件或目录,以及设置警告级别等。 6. 命令行和图形界面:Cppcheck 提供了命令行界面和图形界面两种使用方式。命令行界面适合集成到自动化构建过程中,而图形界面则提供了更直观的交互方式。 总之,Cppcheck 是一个强大的静态代码分析工具,可以帮助开发者发现和修复 C/C++ 代码中的各种错误和问题。它对于提高代码质量、减少潜在的漏洞和提升软件可靠性非常有价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值