Cppcheck简单测评
Cppcheck简单测评
左笔一支 发表于4年前
Cppcheck简单测评
  • 发表于 4年前
  • 阅读 282
  • 收藏 2
  • 点赞 0
  • 评论 1

新睿云服务器60天免费使用,快来体验!>>>   

测评代码如下:

#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;
}

结果图

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

标签: Cppcheck C++
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 3
博文 5
码字总数 920
评论 (1)
左笔一支
我用的是VS2010,格式化错误原来用MingW都能发现,所以不能怪Cppcheck发现不了。
×
左笔一支
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: