文档章节

Cppcheck简单测评

 左笔一支
发布于 2014/01/11 14:03
字数 184
阅读 313
收藏 2

测评代码如下:

#include <cstdio>
#include <string>
int main(void)
{
 // 多了或者少了格式化参数
 ::printf("%d%d%d\n", int(1), int(2));
 ::printf("%d%d%d\n", int(1), int(2), int(3), int(4));
 // 格式化类型不正确
 ::printf("%s\n", std::string("test"));
 ::printf("%d\n", std::string("test"));
 ::printf("%d\n", float(12.34));
 ::printf("%f\n", int(1));
 // 越界
 int a[10] = {0};
 a[10] = 10;
 int b[10] = {0};
 for (int i; i < 11; ++i)
 {
  b[i] = 10;
 }
 for (int i = 0; i < 11; ++i)
 {
  b[i] = 10;
 }
 // 字符串比较的典型错误
 bool bl;
 bl = ("123" == std::string("123").c_str()); // 此处错误没有找到
 if (bl)
 {
 }
 // Cppcheck的一个bug
 std::string str("123");
 ::printf("%d", ("123"==str ? int(1) : int(2))); // 此处误报
 ::system("pause");
 return 0;
}

结果图

有误报,有的错误没找到,但瑕不掩瑜。

© 著作权归作者所有

共有 人打赏支持
粉丝 3
博文 5
码字总数 920
作品 0
佛山
程序员
加载中

评论(1)

左笔一支
我用的是VS2010,格式化错误原来用MingW都能发现,所以不能怪Cppcheck发现不了。
CppCheck 和 SourceMonitor 在 Source Insight、Qt Creator、VS 2013 上的安装配置和使用

一、引言 软件在开发过程中如何保证代码质量?仅凭个人能力去检视判定,效率太低,而且和个人能力有很大关系,如果能有一些小工具来协助,岂不是如虎添翼? 本文就是介绍CppCheck和SourceMon...

容我三思兮
07/14
0
0
Qt Creator Bug 检测、定位插件--Qtc_CppCheck

Qtc_CppCheck是一个Qt Creator IDE的插件,通过调用CppCheck程序检查代码文件,将检查结果直观地显示在IDE中,实现随时检查、快速定位和修改Bug的功能,目前只检测C++。(需要安装CppCheck程...

zlqzlq
2017/05/26
121
0
cppcheck 1.60.1 发布,C/C++代码分析工具

cppcheck 1.60.1 修复了编译模式的一些 bug。 cppcheck是静态的C/C++ 代码分析工具,用以检查内存泄漏,错配的内存分配和释放,缓冲区溢出,以及更多的问题。...

oschina
2013/07/14
2.3K
1
KDevelop 5.1.0 正式发布,带来大量新特性

KDevelop 5.1.0 发布了,这次的更新带来了大量的新特性。KDevelop 是 KDE 的集成开发环境(IDE)。已发布的 5.1 版本支持 LLDB,分析器运行模式,初始支持OpenCL 语言,改进的 Python 语言支...

局长
2017/03/22
2.2K
7
cppcheck 1.57 发布,静态 C/C++ 代码分析

cppcheck是静态的C/C++ 代码分析工具,用以检查内存泄漏,错配的内存分配和释放,缓冲区溢出,以及更多的问题。 cppcheck 1.57 改进记录: Support for Java and C# code has been removed....

oschina
2012/12/25
886
0

没有更多内容

加载失败,请刷新页面

加载更多

Bash重定向详解

Bash重定向详解 Bash的重定向指的是将命令的输入和输出导向不同地方,而不是默认的标准输入、标准输出和标准错误。Bash的重定向实际上是对标准输入、标准输出和标准错误的重置,进而将所需输...

小陶小陶
今天
3
0
EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
今天
6
0
OpenCV图像处理实例:libuv+cvui显示摄像头视频

#include <iostream>#include <opencv2/opencv.hpp>#define CVUI_IMPLEMENTATION#include <cvui.h>extern "C"{#include <uv.h>}using namespace std;#define WINDOW_NAM......

IOTService
今天
3
0
openJDK之JDK9的String

1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使用的是char[],即char数组 每个char占16个bit,Character.SIZE的值是16。 2.openJDK9中的String 图2.1...

克虏伯
今天
4
0
UEFI 模式下如何安装 Ubuntu 16.04

作者:知乎用户 链接:https://www.zhihu.com/question/52092661/answer/259583475 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 针对UEFI模式下安装U...

寻知者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部