Coverity 教程中心
Coverity中文网站 > 教程中心
教程中心分类
Coverity
免费下载
前往了解
在Coverity里,分析流这个概念通常对应着一个具体的代码分支、一条版本线,或者某个固定的构建入口;所以一个项目底下往往可以挂上好几个不同的stream,比如main主干一个,release发布分支一个,feature特性分支再单独一个,分别用来接收和存放各自的扫描结果。要是对stream的管理不够上心,最容易碰到的问题就是缺陷被稀里糊涂地交到了错误的分支里,修复状态在几个地方看起来对不上,或者同一个CID在不同版本的stream之间根本没办法放在一起比对。Coverity Connect在stream收到新的缺陷数据时,会专门生成一份snapshot,后面所有关于结果的对比,也基本都是围绕着snapshot和stream的范围来展开的。
2026-06-29
项目里面只要夹杂了第三方库、自动生成的代码、测试用的桩模块,还有那些为了兼容老版本而保留的历史目录,这些内容并不一定都要被Coverity扫进去。这时候我们就得弄明白两件事:Coverity里到底怎么去设置忽略目录的规则,以及当这些规则加好以后,如果发现忽略路径并没有生效,又该从哪些地方开始排查。这里的一个关键,是先分清当前所做的忽略到底发生在整个流程的哪一个阶段。比较常见的处理方式,可以是在代码被捕获之前就直接把它排除掉,也可以在分析环节启动之前再把它移除掉,还可以到Coverity Connect里去用组件映射的办法,把那些我们不打算花精力去管的问题归拢起来。按照Black Duck社区里一些资料的说法,coverity_config.xml里面的skip_file这个配置项,就能够用来排除那些既不想提交发射、也不打算让分析器去碰的文件和目录。
2026-06-29
在Coverity的体系里,每一个被检测出来的缺陷,都会带上一个属于自己的CID编号,这个编号,就是用来标识和跟踪同一类问题的。想要弄明白在Coverity里面怎么去查看一条CID所对应的详细信息,关键就在于先在问题列表的视图里面,把那个CID给定位出来,然后再点进源码的详情页面,去细看它到底是被哪个检查器给揪出来的、触发的完整路径是怎样的、严重级别有多高,以及当前它处在什么样的处理状态之下。按照Coverity文档里的说法,你是可以直接拿这个CID编号去搜索特定问题的;同时也能通过不同角度的视图,比方说按项目、按组件、按问题本身的数据去分组,来把它给筛出来。
2026-06-29
随着项目代码规模变大,Coverity的检查结果要是全部堆在一个列表里,后面无论是分派任务还是统计缺陷都会变得很乱。解决这个问题,比较有效的办法是配置组件映射,其实就是按照代码的文件路径把问题自动归类到不同组件下,这样哪个团队该处理哪部分代码就一目了然。Coverity Connect本身支持组件功能,允许用户通过文件规则把源代码文件做逻辑分组,而且在一个组件映射里可以添加多条规则,还能设置这些规则的优先级,让匹配更准确。
2026-06-29
项目在持续做静态分析的时候,光盯着某一次的扫描结果去看,其实很难说得清整体的质量到底是在变好还是变坏。要搞清楚Coverity里面怎么做快照之间的对比,以及快照差异的结果又要怎么导出来,关键就在于先要确认用来比较的这两份快照,它俩是来自同一个项目、同一条Stream底下的,并且扫描的范围和规则配置,也要尽量保持一样。做快照对比,主要就是去看新增了哪些问题、有哪些已经被修掉了、哪些还一直挂在那里,以及问题的状态发生了哪些变化,不要光去盯着总数的增加或者减少。
2026-06-29
在代码扫描结果评审的时候,经常会碰到这样一类情况,开发的人看到了缺陷,想把它的状态改成误报、已经确认、等着修复,或者是指定给某一个人去处理,可页面上的按钮却是灰色的,又或者点了保存以后,状态压根儿就没有变,其实,在Coverity Connect里面,审计这个操作,它本质上是一种分诊的权限,用户得在对应的流上面,拥有处理问题的权限才行,而且这个流,还必须关联着一个有效的分诊存储库,权限和对象的范围,只要有一个地方没对上,都会出现改不了的情况,按照官方的权限说明,分诊问题的权限,就是用来修改和更新某一个流里面,那些问题的分诊状态的。
2026-05-29
在代码静态分析刚刚导入项目的时候,经常会碰到这样一种情况:跑完一遍扫描,列表里面一下子冒出好几百条甚至更多的问题,如果就这么从上往下一行一行地改,很容易就把时间全耗在了那些低风险的告警上,而真正会造成崩溃、越界、资源泄漏,还有安全漏洞的问题,反而被拖到了最后面,一种比较稳当的做法,是先去做一次分层的筛选,然后再按照影响的范围、缺陷的类型、代码所处的位置,还有修起来要花多少成本,来安排处理的先后顺序。
2026-05-29
在静态代码扫描刚刚接入项目的时候,有一个情况是挺常见的,那就是团队想把某个版本作为一个新的质量起点,后面只盯着新冒出来的问题去看,可是等把基线重建完了,再打开Coverity的页面,发现以前那些旧的缺陷还是能看得见,于是就很容易觉得,是不是基线没有生效,其实,在Coverity里面,基线的调整,更多是影响到问题怎么去对比、新增怎么去判断,还有质量门禁按什么口径来卡,它并不会自动地帮你把历史缺陷都给删掉,所以处理的时候,要先分清楚,“重置基线”跟“清理旧问题”,这是两件不同的事。
2026-05-29
在SketchUp、Revit、Rhino这类软件里联动Enscape做渲染的时候,经常会碰到一种情况,模型本身挑不出什么毛病,可Enscape的窗口一打开,画面边缘就感觉发糊,材质上的纹理也不够利索,有灯光的地方甚至还带着明显的噪点,遇到这种事,不能把问题全推到显卡性能上,也不能一上来就把所有参数都拉满,比较稳当的做法,是先分清楚,这种发虚的感觉,到底是分辨率、渲染质量、景深、运动模糊、纹理贴图带来的,还是跟显示器的缩放以及导出时候的设置有关。
2026-05-29
在Coverity里做组件映射,真正麻烦的通常不是先建几个组件,而是后面文件到底按什么规则归到哪个组件。官方文档把这个逻辑讲得很直接,Coverity Connect会根据文件的绝对路径去匹配组件映射规则,而且采用的是第一条完整匹配成功的正则表达式结果。换句话说,组件映射不是简单贴标签,而是一套有先后顺序的归属规则。只要这层没理顺,后面缺陷归属、组件报表和责任分发都会跟着乱。
2026-04-20

第一页123456下一页最后一页

135 2431 0251