美文网首页
coverity 代码检查

coverity 代码检查

作者: 火山脚下 | 来源:发表于2020-03-13 09:25 被阅读0次

使用了Coverity代码静态检测工具。功能很强大,超乎我的期望。主要功能如下:

列出不会被执行到的代码
列出没被初始化的类成员变量
列出没有被捕获的异常
列出没有给出返回值的return语句
某个函数虽然有返回值,但调用该函数的地方没有用到它的返回值,这也会被列出来
列出没有被回收的new出来的对象
列出没有被关闭的句柄
精确定位到代码行,并提供逐层展开函数的功能
列出可能的数值类型溢出。例如,无符号int数做 ++ 操作,可能导致int溢出,都会被检测到。
什么地方该用&位运算,而不应该用|位运算,都能定位出来并作出建议
ostream在一个函数中被修改了格式,但退出该函数之后没有将ostream恢复成先前的格式,也会被检测到
……
貌似程序中的所有可能分支,所有new出来的对象何时被销毁,所有可能的异常是否被代码捕获,它都能扫描到。真不简单啊。

我用到的Coverity是部署在企业内部的,通过https页面的方式向程序员报告扫描的安全隐患。

具体的安全隐患页面很专业。但有个缺点,点击一个security issue list中的一个item进入子页面,而后再点浏览器的返回按钮后,不能返回先前的页面,而是返回所有security issue list的第一个list页面,在这点上,用户体验很糟糕,因为本来出来的列表就很长了,看的很晕了,返回页面又不是先前的页面,导致很多时间都花费在重新找寻先前的list页面上了。

解决办法:

点击扫描列表上的"File"列标签,将扫描出来的列表按照文件排序,然后点击右上角的某个按钮,导出成.csv格式文件。
用Excel打开.csv文件,添加一列,记录状态,比如:Done, In progress, Cannot decide 等等。
按照.csv文件条目的顺序自上而下挨个处理。每做完一个条目,就更新对应的.csv文件中对应行的新加列。
注意,每当要处理下一个条目时,从.csv文件中copy出该条目的ID号,粘贴到Coverity页面的右上角的搜索栏中,搜索,并进入具体页面。这样做,可以免除上面提到的“因条目过多导致前进后退时迷失方向”的问题。

按照这样的方法,处理完所有的条目,会得到一个完整的条目状态列表。如果有未解决的条目的话,接下来就只关注这些条目。不会出现条目遗漏,也不会因条目过多而迷失方向。即安全又节省时间。

Coverity多次检测同样的代码(两次之间,被检测的代码有改动),不会覆盖先前的报告,即第一次检测得到的report item number还是有效的,不会被新的report item覆盖,搜索它仍然可以查看先前检测出来的问题。

其实Coverity检测也是有缺陷的,毕竟它只是个辅助工具,不能完全达到人的水平,有时报的问题其实不是问题。例如,它可能报告有个指针pNext在没有在被赋值或被赋值为NULL的情况下做pNext++操作存在风险,其实这个pNext指针在pNext=NULL下面的一个while循环中被赋值了,于是,这个报告可以被忽略。像这样的误报,目前还没找到方法有效地过滤掉。

相关文章

  • coverity 代码检查

    使用了Coverity代码静态检测工具。功能很强大,超乎我的期望。主要功能如下: 列出不会被执行到的代码列出没被初...

  • 使用github+scan.coverity.com对DPDK代

    一. 背景 DPDK社区使用https://scan.coverity.com对仓库代码进行coverity静态检...

  • Coverity代码扫描工具

    1.说明:Coverity代码扫描工具可以扫描java,C/C++等语言,可以和jenkins联动,不过就是要收钱...

  • 王垠现在Sourcegraph

    再见 Voxer,你好 Sourcegraph 话说离开 Coverity 之后,在 Coverity 创始人和 ...

  • 检查代码

    阅读《软件测试》书籍随手记录的笔记 静态白盒测试:检查设计和代码静态白盒测试是在不执行软件的条件下有条理地仔细审查...

  • npm script工作流(二)串行和并行

    代码检查 eslint 【js 代码检查】 stylelint 【样式文件检查】 jsonlint 【json ...

  • 3.8 检查代码

    3.8 检查代码 问题一:代码检查具体是做什么? 检查代码主要检查以下几项: 代码风格:让项目成员强制遵守统一的代...

  • 【jenkins】coverity环境配置

    1:jenkins需要下载coverity plugin 2:配置管理Jenkins > 全局工具配置:cover...

  • TypeScript代码检查

    对于Typescript项目的编码规范而言,主要有两种选择ESLint和TSLint。ESLint不仅能规范js代...

  • python代码检查

    实际参与过项目开发后就能够深深体会到代码的规范对项目的重要性,这中间不仅关系着你对代码bug的修正还包括有后来的伙...

网友评论

      本文标题:coverity 代码检查

      本文链接:https://www.haomeiwen.com/subject/epefshtx.html