【问题标题】:How to beautify/change style in a c++ project using clang/clang-tidy?如何使用 clang/clang-tidy 在 c++ 项目中美化/更改样式?
【发布时间】:2021-06-01 12:50:28
【问题描述】:

有一个大型 c++ 项目,我想更改一些样式。

我目前想知道是否真的可以将公共类方法从 camelCase 更改为 PascalCase,而无需编写完整的重构工具。 例如:

class MyLovelyClassPlentyOfCamelCaseMethods
{
    public:
        void aCamelCaseMethodIWouldLoveToConvertToPascalCaseEverywhere();
    protected:
    private:
        void anotherCamelCaseMethodIWouldLoveToRemainAsIs();
};

我知道 LLVM/clang 工具是一种功能强大的工具,可以用来实现这一目标,但我在 clang 方面是全新的,并且在各个方面都很整洁,因此非常欢迎任何一步一步的指导。我找到了一些有关的资源和文档,但仍然无法达到任何有用的点,并且开始对如何进行此操作感到非常困惑。

提前非常感谢社区!

【问题讨论】:

  • 使用 IDE 进行重构,而不是编译器。以下是一些流行 IDE 的快速结果(VSVS CodeCLion)。
  • @Frank 通常这是正确的建议,但 clang-format 无法做出 OP 提到的具体更改。我对 clang-tidy 的经验较少,但它可能具有自定义规则。否则这可能最好留给 IDE 或搜索和替换。
  • 再次感谢您的 cmets 和帮助!对此,我真的非常感激。遗憾的是,我想避免手动更改,即使它们大多是自动的,并且在 VS 重构和可以使用的多个扩展之后得到支持。所需的更改量甚至很多,我认为可能值得构建自定义重构工具......在这种情况下,还需要一些有经验的人的建议。

标签: c++ clang refactoring clang-format clang-tidy


【解决方案1】:

为此目的设计了一个整洁的检查:

readability-identifier-naming

使用fix 选项,您可以使用此检查将大小写从帕斯卡实际转换为骆驼。

readability-identifier-naming 可用于为不同类别的标识符单独转换大小写。

要将公共成员方法的大小写更改为 pascal* 并将私有成员方法的大小写更改为 camel*,您的 .clang-tidy 文件应如下所示:

Checks: '-*,readability-identifier-naming'
CheckOptions:
  - { key: readability-identifier-naming.PublicMethodCase, value: CamelCase}
  - { key: readability-identifier-naming.PrivateMethodCase, value: camelBack}

*注意:您所说的帕斯卡案例称为 CamelCase,而您的骆驼案例是 clang-tidy 中的 camelBack

【讨论】:

  • 首先感谢您的回答。但这实际上对找到实现我的问题的目标目标没有太大帮助。
  • 从另一面来看,有许多代码样式,可能有很多不同的原因导致有人决定使用我在问题中提到的所选代码样式,所以对我来说,归咎于混合是没有意义的帕斯卡和驼峰式风格,而不是像“那样”这样的词。是否应该有适当的方法来混合它们?在这种情况下,请详细说明。
  • 在我看来,对于同一类别的符号(例如您问题中的类中的方法),它们根本不应该混合使用。您可以拥有适合您的编码风格,但从可读性的角度来看,保持风格简单和一致是值得的。
  • 类中的方法也有不同的类别,从我的可读性角度来看,公共方法与受保护或私有方法不同。变量也一样。但是没有什么比代码风格更主观的了,有许多有效且合理的组合。对于开发人员来说,重要的是要知道如何适应和理解每种代码风格。
  • 好的,我刚刚意识到我误解了您的问题 - 抱歉。我以为您想任意选择哪种方法应该具有哪种情况,因为您没有明确指定差异是访问说明符。 clang-tidy 支持为公共/私有方法选择不同的案例。相应地编辑了我的答案。
猜你喜欢
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 2016-02-18
  • 2018-10-01
相关资源
最近更新 更多