Я пытаюсь узнать о 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 ведет себя по-разному в упомянутых случаях? Если нет, то возможно ли, что это ошибка?