首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么coverity不在我的节目中显示CHECKED_RETURN?

为什么coverity不在我的节目中显示CHECKED_RETURN?
EN

Stack Overflow用户
提问于 2017-04-05 11:33:26
回答 2查看 1K关注 0票数 0
代码语言:javascript
运行
复制
#include<stdio.h>
#include <stdlib.h>

int test() {
  const char* s = getenv("CNU");
  if (s!=NULL)
    return 1;
  else
    return -1;
}

int main() {
  test();
  // some C code..
  return 0;
}

用于隐蔽性分析的命令:

代码语言:javascript
运行
复制
cov-build --dir Cov.build gcc test.c
cov-analyze --dir Cov.build --aggressiveness-level high --enable-callgraph-metrics --all

报告:

代码语言:javascript
运行
复制
Analysis summary report:
------------------------
Files analyzed                 : 1
Total LoC input to cov-analyze : 10926
Functions analyzed             : 2
Paths analyzed                 : 6
Time taken by analysis         : 00:00:01
Defect occurrences found       : 0

关于CHECKED_RETURN:https://ondemand.coverity.com/reference/7.6.1/en/coverity

EN

回答 2

Stack Overflow用户

发布于 2017-04-07 16:52:19

CHECKED_RETURN检查器是一种统计检查器--它查找检查返回值的示例,如果达到统计意义(可配置的)阈值,将对未检查返回值的位置发出缺陷。

如果希望在检查返回值失败时始终发出缺陷,则需要添加__coverity_always_check_return__(),如您链接的文档中的示例所示:

代码语言:javascript
运行
复制
int always_check_me(void) {
  __coverity_always_check_return__();
  return rand() % 2;
}

int main(int c, char **argv) {
  always_check_me();  #defect#checked_return
  // the statement above is a defect because the value is not checked
  cout << "Hello world" << endl;
}

由于明显的原因,您还需要为此创建一个函数存根,以便源代码进行编译(文档中也提到)。如果您想使代码仅用于Coverity,您可以使用#if __COVERITY__来保护它。

票数 3
EN

Stack Overflow用户

发布于 2018-03-02 06:06:33

是的,CHECKED_RETURN是一个统计检查错误。如果在10个位置检查test()的返回值,那么在第11位,如果没有检查test()的返回值,则coverity将返回CHECKED_RETURN错误。Ans显示它从总使用量中检出了多少个地方的统计数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43230008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档