a.cpp
:
#include <iostream>
void func(const int& a, const int b, int c) {
std::cout << a + b + c << std::endl;
}
int main() {
func(1, 2, 3);
return 0;
}
字符串
我想用clang-tidy为参数a
和b
指定大小写,而不是c
。怎么办?
我还在llvm项目https://github.com/llvm/llvm-project/issues/64220上打开了一个问题,但也许这里有人有一个快速解决方案。
相关:https://clang.llvm.org/extra/clang-tidy/checks/readability/identifier-naming.html
clang-tidy -checks='readability-identifier-naming' -config="{CheckOptions: [ {key: readability-identifier-naming.ParameterCase, value: UPPER_CASE} ]}" a.cpp -- -std=c++17
型
捕获所有参数。
clang-tidy -checks='readability-identifier-naming' -config="{CheckOptions: [ {key: readability-identifier-naming.ConstantParameterCase, value: UPPER_CASE} ]}" a.cpp -- -std=c++17
型
仅捕获参数b
,而不是a
。我想同时捕获a
和b
。
clang-tidy --version
LLVM (http://llvm.org/):
LLVM version 15.0.7
Optimized build.
Default target: x86_64-pc-linux-gnu
Host CPU: skylake
型
1条答案
按热度按时间gk7wooem1#
为了总结这个请求,您需要一个名为readability-identifier-naming的
clang-tidy
检查配置,它要求对const int &
和const int
类型的参数使用大写字母,但不要求对int
类型的参数使用大写字母。在Clang+LLVM的当前版本16.0.6中,这是不可能的。
ParameterCase
选项适用于所有三个,而ConstantParameterCase
选项仅适用于const int
,而不是const int &
,因为后者是对const
限定类型的引用,但本身不是const
限定的(引用类型不能是const
限定的)。没有比
ParameterCase
更具体的选项适用于const int &
参数,可以从下面摘录的IdentifierNamingCheck::findStyleKind
源代码中看出:ParmVarDecl
AST对象。const int &
)既不是constexpr
也不是const
。Type
::isAnyPointerType()
,就像C/C++指针和Objective-C指针一样,但不是引用。SK_Parameter
,它对应于ParameterCase
选项(用于字母大小写规则)。当然,如果您的Issue #64220被执行,这在未来的版本中可能会改变。你可能想在这个问题上澄清一下,你(现在)明白这在当前版本中是不可能的,你正在提出增强请求。
源代码摘录:
字符串