使用 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 工具来改善这种情况

Extending clang tooling