首页 > 解决方案 > 使用 compile_commands.json 时的 Cppcheck 内联抑制

问题描述

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

a.cpp

struct A {
  int i;
};

// cppcheck-suppress unusedFunction
A operator+(const A &a1, const A &a2) {
  return A{a1.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(版本 1.82)时,cppcheck --enable=all --inline-suppr a.cpp它很好。但是当我使用 compile_commands.json 文件运行它时cppcheck --enable=all --inline-suppr --project=compile_commands.json,我得到了以下结果:

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

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

标签: c++cppcheck

解决方案


我认为这是 1.82 版中的一个错误,因为使用较新的版本它可以正常工作。


推荐阅读