stephanemoore created this revision. stephanemoore added reviewers: benhamilton, aaron.ballman. Herald added subscribers: cfe-commits, xazax.hun.
The diagnostics from google-objc-function-naming check will be more actionable if they provide a brief description of the requirements from the Google Objective-C style guide. The more descriptive diagnostics may help clarify that functions in the global namespace must have an appropriate prefix followed by Pascal case (engineers working previously with static functions might not immediately understand the different requirements of static and non-static functions). Test Notes: Verified against the clang-tidy tests. Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D55482 Files: clang-tidy/google/FunctionNamingCheck.cpp test/clang-tidy/google-objc-function-naming.m test/clang-tidy/google-objc-function-naming.mm
Index: test/clang-tidy/google-objc-function-naming.mm =================================================================== --- test/clang-tidy/google-objc-function-naming.mm +++ test/clang-tidy/google-objc-function-naming.mm @@ -1,16 +1,19 @@ // RUN: %check_clang_tidy %s google-objc-function-naming %t void printSomething() {} -// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function name 'printSomething' not -// using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: global function name +// 'printSomething' must have an appropriate prefix followed by Pascal case as +// required by Google Objective-C style guide void PrintSomething() {} -// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function name 'PrintSomething' not -// using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: global function name +// 'PrintSomething' must have an appropriate prefix followed by Pascal case as +// required by Google Objective-C style guide void ABCBad_Name() {} -// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function name 'ABCBad_Name' not -// using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: global function name 'ABCBad_Name' +// must have an appropriate prefix followed by Pascal case as required by Google +// Objective-C style guide namespace { Index: test/clang-tidy/google-objc-function-naming.m =================================================================== --- test/clang-tidy/google-objc-function-naming.m +++ test/clang-tidy/google-objc-function-naming.m @@ -3,28 +3,35 @@ typedef _Bool bool; static bool ispositive(int a) { return a > 0; } -// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: function name 'ispositive' not using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: static function name 'ispositive' +// must be in Pascal case as required by Google Objective-C style guide // CHECK-FIXES: static bool Ispositive(int a) { return a > 0; } static bool is_positive(int a) { return a > 0; } -// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: function name 'is_positive' not using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: static function name 'is_positive' +// must be in Pascal case as required by Google Objective-C style guide // CHECK-FIXES: static bool IsPositive(int a) { return a > 0; } static bool isPositive(int a) { return a > 0; } -// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: function name 'isPositive' not using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: static function name 'isPositive' +// must be in Pascal case as required by Google Objective-C style guide // CHECK-FIXES: static bool IsPositive(int a) { return a > 0; } static bool Is_Positive(int a) { return a > 0; } -// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: function name 'Is_Positive' not using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: static function name 'Is_Positive' +// must be in Pascal case as required by Google Objective-C style guide // CHECK-FIXES: static bool IsPositive(int a) { return a > 0; } static bool IsPositive(int a) { return a > 0; } bool ispalindrome(const char *str); -// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function name 'ispalindrome' not using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: global function name 'ispalindrome' +// must have an appropriate prefix followed by Pascal case as required by Google +// Objective-C style guide static const char *md5(const char *str) { return 0; } -// CHECK-MESSAGES: :[[@LINE-1]]:20: warning: function name 'md5' not using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:20: warning: static function name 'md5' must be +// in Pascal case as required by Google Objective-C style guide // CHECK-FIXES: static const char *Md5(const char *str) { return 0; } static const char *MD5(const char *str) { return 0; } @@ -38,12 +45,16 @@ static const char *StringFromNSString(id str) { return ""; } void ABLog_String(const char *str); -// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function name 'ABLog_String' not using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: global function name 'ABLog_String' +// must have an appropriate prefix followed by Pascal case as required by Google +// Objective-C style guide void ABLogString(const char *str); bool IsPrime(int a); -// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function name 'IsPrime' not using function naming conventions described by Google Objective-C style guide +// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: global function name 'IsPrime' must +// have an appropriate prefix followed by Pascal case as required by Google +// Objective-C style guide const char *ABURL(void) { return "https://clang.llvm.org/"; } Index: clang-tidy/google/FunctionNamingCheck.cpp =================================================================== --- clang-tidy/google/FunctionNamingCheck.cpp +++ clang-tidy/google/FunctionNamingCheck.cpp @@ -110,10 +110,19 @@ void FunctionNamingCheck::check(const MatchFinder::MatchResult &Result) { const auto *MatchedDecl = Result.Nodes.getNodeAs<FunctionDecl>("function"); + // Emit a diagnostic message and fixit for static functions. + if (MatchedDecl->getStorageClass() == SC_Static) { + diag(MatchedDecl->getLocation(), + "static function name %0 must be in Pascal case as required by " + "Google Objective-C style guide") + << MatchedDecl << generateFixItHint(MatchedDecl); + return; + } + diag(MatchedDecl->getLocation(), - "function name %0 not using function naming conventions described by " - "Google Objective-C style guide") - << MatchedDecl << generateFixItHint(MatchedDecl); + "global function name %0 must have an appropriate prefix followed by " + "Pascal case as required by Google Objective-C style guide") + << MatchedDecl; } } // namespace objc
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits