转换为 clang 格式的 C++17 嵌套命名空间?

Convert to C++17 nested namespaces in clang-format?

我第一次尝试在代码库中启用 clang-format。我们已经在使用 clang-tidy 来检查代码味道,并且它已经开始警告我们这样的代码:

namespace foo { namespace bar {

namespace foo {
    namespace bar {

modernize-concat-nested-namespaces 检查。想看

namespace foo::bar {

我希望 运行 clang-format 可以为我解决这个问题,但没有成功。有没有办法用 clang-format 来做到这一点?

我不想窃取@Barry 的答案(来自对原始问题的评论),但已经 4 个月了...... clang-tidy 确实可以为你解决这个问题,并且 clang-format 主要处理空格,不会为您解决这个问题。

对于clang-tidy,你会这样做:

clang-tidy -checks='-*,modernize-concat-nested-namespaces' -fix myfile.cpp

解释:

  • -* 禁用所有检查。
  • 随后的 modernize-concat-nested-namespaces 启用该检查。
  • -fix 告诉 clang-tidy 修复发现的任何问题,但前提是没有编译错误。要强制它在存在编译错误的情况下解决问题,请使用 -fix-errors.

如果需要,您可以在 command-line 上指定多个源文件。