有没有办法强制在 clang-format/clang-tidy 中对 class members/methods 使用 "this->"?

Is there a way to enforce using "this->" for class members/methods in clang-format/clang-tidy?

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

我唯一找到的是这个未回答的问题(但是有点宽泛):CPP lint: Can you enforce use of this for class variables? .

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

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

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

因此,剩下 clang-tidy。查看 the options,我没有看到该选项。我认为它可以作为 readability-* 检查,因为这里允许进行更多有争议的检查。不过,我觉得如果你想要这个,你应该自己写并提供给项目。

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