在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

一份编程错误列表强调静态代码分析有其必要性

  • 2012-12-19
  • 本文字数:761 字

    阅读完需:约 2 分钟

Program Verification Systems 公司(针对 C 和 C++ 的静态代码分析工具 PVS-Studio 就是该公司的产品)发布了一份编程错误列表,有些错误是从Chromium、TortoiseSVN、Apache HTTP Server 和MySQL 等流行的开源项目中发现的。

这份列表维护的编码错误有150 多类,有的是严重的逻辑错误,有的是性能相关的问题,还有一些危害并不是很大。

下面是选自该列表的一些错误类型,示例代码都来自真实项目。

V502 ——或许‘?:’运算符的工作方式和想象中并不相同。该运算符的优先级比很多运算符都要低。

MongoDB:

复制代码
string sysInfo() {
....
stringstream ss;
....
ss << (sizeof(char *) == 8) ? " 64bit" : " 32bit";
....
}

这是一个很好的例子。这段代码打印的是 0 或 1,而非“32bit”或“64bit”。

V511 ——在如下表达式中,sizeof 运算符返回的是指针的大小,而非数组的大小。

Chromium:

复制代码
uint8 salt_[LINK_SALT_LENGTH];
VisitedLinkMaster::TableBuilder::TableBuilder(
VisitedLinkMaster* master,
const uint8 salt[LINK_SALT_LENGTH])
: master_(master),
success_(true) {
fingerprints_.reserve(4096);
memcpy(salt_, salt, sizeof(salt));
}

“salt”对象就是一个指针。方括号中的值 LINK_SALT_LENGTH 向程序员表明,他们正在使用的是一个包含 LINK_SALT_LENGTH 个元素的数组。但传递给函数的并不是数组——只是个指针。因此,表达式 sizeof(salt) 返回的值是 4 或 8(32 位或者 64 位系统上指针的大小)。

到目前为止,这个列表上列出的、出现于各种开源项目的错误,很多可能已经修复。因为任何程序员都难免出错,所以使用一个或多个静态代码分析工具处理一下源代码是个不错的建议。Wikipedia 上有一个页面,列出了很多针对不同语言的静态代码分析工具。

参考英文原文 An Errors List Underscores the Need for Static Code Analysis

2012-12-19 08:282971
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 151.9 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

威胁驱动的网络安全方法论

喀拉峻

网络安全

建设领先的AI原生云,百度智能云落地新一代高性能AI计算集群

百度大脑

纯CSS 神奇的边框特效

德育处主任

css3 纯CSS 前端可视化 css动画

有温度的人工智能,零门槛助力企业“鲤跃”智能化“龙门”

百度大脑

图灵奖得主Yann LeCun走进百度,与世界研究工作者展开交流

百度大脑

架构训练营毕业总结

Geek_e6f7f6

架构实战营

一文彻底搞懂原型链

CRMEB

模块化编程及LCD1602调试工具

謓泽

3月月更

Hoo虎符研究院| 稳定币的主要分类及发展趋势

区块链前沿News

虎符研究院 稳定币

【Python训练营】Python每日一练----第31天: k倍区间

是Dream呀

3月月更

尤达DDD领域驱动设计思想 第一章作业(理解单纯的面向对象设计思想的缺陷)

代廉洁

尤达DDD领域驱动设计思想

尤达 DDD 领域驱动设计思想 第二章作业(重新划分SmartRM的子域和限界上下文)

代廉洁

尤达DDD领域驱动设计思想

对称加密与非对称加密总结

暖蓝笔记

3月月更

免费机器资源、硬核导师、丰厚奖励|飞桨黑客马拉松第二期开始啦!

百度大脑

吉利控股集团与百度深化战略合作

百度大脑

聊聊编程中的 “魔数”

程序员鱼皮

优秀的测试开发应该具备的六大能力

老张

软件测试 测试开发

[算法练习]2 二进制中1的个数

暖蓝笔记

3月月更

vim 常用操作键tips

刁架构

xcode vim 快捷键

拿下10+OFFER总结的HR常问问题

暖蓝笔记

3月月更

经验分享 | 搭建帮助中心的最强攻略

小炮

我给公司用了这款工具,领导直接给我涨了两千工资

刘祥

后端技术 编程工具

Flutter 图文并茂列表完整实现

岛上码农

flutter ios 安卓 移动端 3月月更

Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器

汪子熙

eclipse ide 开发者 abap 3月月更

微博评论的高性能高可用计算架构

AragornYang

架构训练营 架构实战营

做一个小程序到底要多少钱?都有哪些费用?

源字节1号

开源 前端开发 后端开发 开发小程序

百度连续四年亮相全球量子信息处理顶会QIP 宣布量子战略规划升级

百度大脑

AI语音识别-我给浏览器加了个语音搜索功能

DS小龙哥

语音识别 3月月更

实用机器学习笔记二十六:NAS

打工人!

学习笔记 NAS 机器学习算法 3月月更 神经网络架构搜索

使用关键点检测打造小工具Padoodle,让涂鸦小人跟随真人学跳舞

百度大脑

报名啦!中小企业如何借力AI逆势突围?飞桨中国行定档3月23日!

百度大脑

一份编程错误列表强调静态代码分析有其必要性_语言 & 开发_Abel Avram_InfoQ精选文章