使用 clang-format 格式化时如何删除空表达式?
How to remove empty expressions while formatting with clang-format?
有没有办法使用 clang-format 删除如下所示的空表达式(冗余分号)?
int main() {
return 0;
}; <- redundant ;
由于以下其他有效情况,朴素的搜索替换将不起作用:
struct A {
int a;
}; <- required
搜索 empty/expression/semi/colon 没有找到与 clang 格式相关的内容 docs。
clang-tidy 上有一个“Bugprone suspicious semicolon”,但它没有选择您提供的案例。
clang-tidy 会在正确的情况下为您修复代码。示例:
# cat test.cpp
int main()
{
};
$ clang-tidy --fix -checks=modernize* test.cpp --
1 warning generated.
test.cpp:1:5: warning: use a trailing return type for this function [modernize-use-trailing-return-type]
int main()
~~~ ^
auto -> int
test.cpp:1:1: note: FIX-IT applied suggested code changes
int main()
^
test.cpp:1:11: note: FIX-IT applied suggested code changes
int main()
^
clang-tidy applied 2 of 2 suggested fixes.
然后代码就地固定
$ cat test.cpp
auto main() -> int
{
};
一个解决方案是通过修改 clang 工具来改善这种情况
有没有办法使用 clang-format 删除如下所示的空表达式(冗余分号)?
int main() {
return 0;
}; <- redundant ;
由于以下其他有效情况,朴素的搜索替换将不起作用:
struct A {
int a;
}; <- required
搜索 empty/expression/semi/colon 没有找到与 clang 格式相关的内容 docs。
clang-tidy 上有一个“Bugprone suspicious semicolon”,但它没有选择您提供的案例。
clang-tidy 会在正确的情况下为您修复代码。示例:
# cat test.cpp
int main()
{
};
$ clang-tidy --fix -checks=modernize* test.cpp --
1 warning generated.
test.cpp:1:5: warning: use a trailing return type for this function [modernize-use-trailing-return-type]
int main()
~~~ ^
auto -> int
test.cpp:1:1: note: FIX-IT applied suggested code changes
int main()
^
test.cpp:1:11: note: FIX-IT applied suggested code changes
int main()
^
clang-tidy applied 2 of 2 suggested fixes.
然后代码就地固定
$ cat test.cpp
auto main() -> int
{
};
一个解决方案是通过修改 clang 工具来改善这种情况