【问题标题】:Is there a way to enforce using "this->" for class members/methods in clang-format/clang-tidy?有没有办法强制对 clang-format/clang-tidy 中的类成员/方法使用“this->”?
【发布时间】:2019-09-27 04:56:12
【问题描述】:

我到处搜索,但我可能使用了错误的术语。我还没有找到这个选项。

我发现的唯一问题是这个未回答的问题(但范围更广):CPP lint: Can you enforce use of this for class variables?

【问题讨论】:

  • 你为什么要那个?
  • 总是很好用的方法,就像提到你分享的链接一样。我区分成员变量与局部变量的一种方法是例如:'m_sum' 用于成员变量,'sum' 用于局部变量。如果您试图强制执行此操作以克服某些代码分析器工具通知,您可能会使其误报。不建议在所有成员变量前使用“this->”。
  • 我对此表示赞同,因为这是一个明确的问题,表明了努力,但我真的很难同意这个想法......
  • 代码格式化最终是个人喜好的话题。有一些格式化方法可以收集一定的共识,但这是关于如何进行特定格式化,而不是它的好坏。我也相信一致的格式优于 """better""" 但不一致的格式。
  • 我为此问题创建了 LLVM 错误:bugs.llvm.org/show_bug.cgi?id=41824

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


【解决方案1】:

鉴于existing options,我不相信clang 格式是可能的,而不是将来会。 主要原因是程序的工作方式。它不会将 C++ 代码解析为 AST,而是标记文本而不需要包含(定义它的成员和全局变量)而不是编译数据库(影响定义、包含路径......)甚至可以给它一段代码并重新格式化。

从问题的性质来看,如果它可以存在于 clang-tooling 中,则可以预期是编译器警告或 clang-tidy。由于这在编译时检查起来应该很便宜,因此可能会发出警告,尽管警告通常是关于全球公认的改进。我不相信对此有共识。

所以,这就留下了铿锵的整洁。查看the options,我没有看到该选项。我认为readability-* 检查是可能的,因为这里允许进行更多有争议的检查。不过,我认为如果您想要这个,您应该自己编写并提供给项目。

最后的个人说明:我不相信this-> 是一个好的解决方案,但也不是以m_ 开始所有事情(已经可能),或者不这样做。如果检查可以配置为添加/删除this->,那就太好了,所以可以尝试一下。

【讨论】:

    【解决方案2】:

    从 clang-format 关于其样式 options 的文档来看,这似乎是不可能的。

    【讨论】:

      猜你喜欢
      • 2021-02-24
      • 2021-06-12
      • 2020-04-04
      • 2017-04-07
      • 1970-01-01
      • 2012-05-06
      • 2020-02-26
      • 2020-03-02
      相关资源
      最近更新 更多