使用 compile_commands.json 时的 Cppcheck 内联抑制

Posted

技术标签:

【中文标题】使用 compile_commands.json 时的 Cppcheck 内联抑制【英文标题】:Cppcheck inline suppression when using compile_commands.json 【发布时间】:2020-03-27 22:44:17 【问题描述】:

我正在尝试了解 cppcheck,因此我将它集成到我的示例项目的 travis 构建中。多亏了 cppcheck,我修复了很多问题,但是我想通过内联抑制忽略一些误报。

a.cpp

struct A 
  int i;
;

// cppcheck-suppress unusedFunction
A operator+(const A &a1, const A &a2) 
  return Aa1.i + a2.i;


int main() 
  return 0;

compile_commands.json

[
  
    "directory": "/path/to/source",
    "command": "/usr/bin/clang++-9 -std=gnu++17 -o a.o -c a.cpp",
    "file": "a.cpp"
  
]

当我以cppcheck --enable=all --inline-suppr a.cpp 运行 cppcheck(版本 1.82)时,就可以了。但是当我使用像cppcheck --enable=all --inline-suppr --project=compile_commands.json 这样的compile_commands.json 文件运行它时,我得到了以下结果:

Checking a.cpp ...
[a.cpp:6]: (style) The function 'operator+' is never used.

cppcheck 在上述情况下的行为是否不同,是否有任何记录在案的原因?如果不是,这可能是一个错误?

【问题讨论】:

【参考方案1】:

我认为这是 1.82 版中的一个错误,因为在新版本中它运行良好。

【讨论】:

以上是关于使用 compile_commands.json 时的 Cppcheck 内联抑制的主要内容,如果未能解决你的问题,请参考以下文章

get compile_commands.json from aosp

Cppcheck 无法识别命令

oclint:oclint-json-compilation-database 返回“未找到跳过 [路径] 命令行”。

禁用在 clang 前端查找预编译的头文件

忍者输出空的compdb内容

使用 MSVC2015 在 Windows 上进行 clang-tidy