- 
      
- 
        Save airglow923/1fa3bda42f2b193920d7f46ee8345e04 to your computer and use it in GitHub Desktop. 
| CheckOptions: | |
| - key: readability-identifier-naming.ClassCase | |
| value: CamelCase | |
| - key: readability-identifier-naming.ClassMemberCase | |
| value: lower_case | |
| - key: readability-identifier-naming.ConstexprVariableCase | |
| value: CamelCase | |
| - key: readability-identifier-naming.ConstexprVariablePrefix | |
| value: k | |
| - key: readability-identifier-naming.EnumCase | |
| value: CamelCase | |
| - key: readability-identifier-naming.EnumConstantCase | |
| value: CamelCase | |
| - key: readability-identifier-naming.EnumConstantPrefix | |
| value: k | |
| - key: readability-identifier-naming.FunctionCase | |
| value: CamelCase | |
| - key: readability-identifier-naming.GlobalConstantCase | |
| value: CamelCase | |
| - key: readability-identifier-naming.GlobalConstantPrefix | |
| value: k | |
| - key: readability-identifier-naming.StaticConstantCase | |
| value: CamelCase | |
| - key: readability-identifier-naming.StaticConstantPrefix | |
| value: k | |
| - key: readability-identifier-naming.StaticVariableCase | |
| value: lower_case | |
| - key: readability-identifier-naming.MacroDefinitionCase | |
| value: UPPER_CASE | |
| - key: readability-identifier-naming.MacroDefinitionIgnoredRegexp | |
| value: '^[A-Z]+(_[A-Z]+)*_$' | |
| - key: readability-identifier-naming.PrivateMemberCase | |
| value: lower_case | |
| - key: readability-identifier-naming.ProtectedMemberCase | |
| value: lower_case | |
| - key: readability-identifier-naming.PublicMemberCase | |
| value: lower_case | |
| - key: readability-identifier-naming.PrivateMemberSuffix | |
| value: _ | |
| - key: readability-identifier-naming.ProtectedMemberSuffix | |
| value: _ | |
| - key: readability-identifier-naming.PublicMemberSuffix | |
| value: '' | |
| - key: readability-identifier-naming.NamespaceCase | |
| value: lower_case | |
| - key: readability-identifier-naming.ParameterCase | |
| value: lower_case | |
| - key: readability-identifier-naming.TypeAliasCase | |
| value: CamelCase | |
| - key: readability-identifier-naming.TypedefCase | |
| value: CamelCase | |
| - key: readability-identifier-naming.VariableCase | |
| value: lower_case | |
| - key: readability-identifier-naming.IgnoreMainLikeFunctions | |
| value: 1 | 
@rsglobal As per Google C++ Style Guide,
All such variables with static storage duration (i.e., statics and globals, see Storage Duration for details) should be named this way. This convention is optional for variables of other storage classes, e.g., automatic variables, otherwise the usual variable naming rules apply.
this way refers to the naming convention of constant names.
But it looks like .StaticVariableCase is designed not for consts:
With this rule I have the following failure:
error: invalid case style for static variable 'backend_manager' [readability-identifier-naming,-warnings-as-errors]
BackendManager &BackendManager::GetInstance() {
  static BackendManager backend_manager;                                                                    
                        ^~~~~~~~~~~~~~~ 
                        kBackendManager                     
@rsglobal I think you're right. I thought all such variables mean variables regardless of their constness. However, after going through Google's source code, I could see non-const static variables are written with snake case:
- protobuf/stubs/common.cc
- protobuf/io/coded_stream_unittest.cc
- protobuf/testing/googletest.cc
- protobuf/extension_set.cc
- googletest/include/gtest/internal/gtest-port.h
- googletest/test/gtest_pred_impl_unittest.cc
I'm going to fix the error Thanks for letting me know.
@airglow23,
Thank you.
Could you also add this lines?:
  - key:             readability-identifier-naming.ConstexprVariableCase                                               
    value:           CamelCase                                                                                         
  - key:             readability-identifier-naming.ConstexprVariablePrefix                                             
    value:           k                                                                                                  
Currently constexpr variables are lower_case for some reason on tidy-11.
And also there is one more false positive in macros:
error: invalid case style for macro definition 'DRM_DRMFBIMPORTER_H_' [readability-identifier-naming,-warnings-as-errors]   
#define DRM_DRMFBIMPORTER_H_
        ^~~~~~~~~~~~~~~~~~~~
        DRM_DRMFBIMPORTER_H 
Do you have any ideas how to fix it?
UPDATE
I forgot to mention that IgnoredRegexp is only supported in clang-tidy 12 onwards.
Thanks. I included ConstexprVariableCase and Prefix as well to the file.
I think the error is due to the trailing underline. You can make use of MacroDefinitionIgnoredRegexp to allow trailing underline.
For example,
- key: readability-identifier-naming.MacroDefinitionIgnoredRegexp
  value: '^[A-Z]+(_[A-Z]+)*_$'Note that IgnoredRegexp uses POSIX Extended Regular Expressions (POSIX ERE) for its regex engine.
Thank you, it worked for me out-of-the-box after upgrading to v12.
I think it worth adding into your CheckOptions list
@rsglobal Updated. Thanks
Hello,
To fix this:
Data members of structs, both static and non-static, are named like ordinary nonmember variables. They do not have the trailing underscores that data members in classes have.
the following diff has to be applied:
-  - key:             readability-identifier-naming.MemberSuffix
+  - key:             readability-identifier-naming.PrivateMemberSuffix
     value:           _
+  - key:             readability-identifier-naming.PublicMemberSuffix
+    value:           ''@rsglobal Thank you for pointing that out
How to use it in CMake Project.
@ehds I made a tutorial: https://itnext.io/save-your-sanity-and-time-beyond-clang-format-2b929b9120b8
Thanks, it's work for me.
@airglow923 Do you have any specific license on this repo?
@IshitaTakeshi No, I don't. You can use or modify it as you want.
I think you also need
  - key:             readability-identifier-naming.ProtectedMemberCase
    value:           lower_case
  - key:             readability-identifier-naming.ProtectedMemberSuffix
    value:           _
@maliberty Thanks, I added ProtectedMemberSuffix. I also replaced MemberCase with equivalent public, protected, and private configurations.
Hi, thank you for sharing this.
Are you sure static should have
kCamelCaseinstead oflower_case?