C++如何警告函数声明和定义中参数名称之间的区别

luc*_*0ni 7 c++ static-analysis

有没有办法得到关于函数声明和它的定义之间的参数名称不匹配的警告?

宣言

double divide(int a, int b);
Run Code Online (Sandbox Code Playgroud)

定义

double divide(int b, int a)
{
    return a / b;
}
Run Code Online (Sandbox Code Playgroud)

对于使用该函数的用户,divide将期望a/b作为结果而不是b/a.

我知道,编译器不能这样做,但有一些静态分析工具可以做到吗?如果是的话,哪些?

nwp*_*nwp 12

你可以使用clang-tidy.将它称为编译器有点紧张,但也许有一个选项可以让clang发出clang-tidy警告.您想要的具体选项是readability-inconsistent-declaration-parameter-name.