add ID as a special acronym to objc property declaration check for property names...
authorYan Zhang <ynzhang@google.com>
Wed, 17 Jan 2018 00:19:35 +0000 (00:19 +0000)
committerYan Zhang <ynzhang@google.com>
Wed, 17 Jan 2018 00:19:35 +0000 (00:19 +0000)
Reviewers: benhamilton, hokein

Reviewed By: benhamilton

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D42143

llvm-svn: 322602

clang-tools-extra/clang-tidy/objc/PropertyDeclarationCheck.cpp
clang-tools-extra/test/clang-tidy/objc-property-declaration.m

index e47b241..4ca03bf 100644 (file)
@@ -41,7 +41,8 @@ constexpr char DefaultSpecialAcronyms[] =
     "RGB;"
     "CMYK;"
     "MIDI;"
-    "FTP";
+    "FTP;"
+    "ID";
 
 /// For now we will only fix 'CamelCase' property to
 /// 'camelCase'. For other cases the users need to
@@ -58,13 +59,13 @@ FixItHint generateFixItHint(const ObjCPropertyDecl *Decl) {
   return FixItHint();
 }
 
-std::string validPropertyNameRegex(const std::vector<std::string> &Prefixes) {
-  std::vector<std::string> EscapedPrefixes;
-  EscapedPrefixes.reserve(Prefixes.size());
+std::string validPropertyNameRegex(const std::vector<std::string> &Acronyms) {
+  std::vector<std::string> EscapedAcronyms;
+  EscapedAcronyms.reserve(Acronyms.size());
   // In case someone defines a custom prefix which includes a regex
   // special character, escape all the prefixes.
-  std::transform(Prefixes.begin(), Prefixes.end(),
-                 std::back_inserter(EscapedPrefixes), [](const std::string& s) {
+  std::transform(Acronyms.begin(), Acronyms.end(),
+                 std::back_inserter(EscapedAcronyms), [](const std::string& s) {
                    return llvm::Regex::escape(s); });
   // Allow any of these names:
   // foo
@@ -73,9 +74,11 @@ std::string validPropertyNameRegex(const std::vector<std::string> &Prefixes) {
   // urlString
   // URL
   // URLString
+  // bundleID
   return std::string("::((") +
-      llvm::join(EscapedPrefixes.begin(), EscapedPrefixes.end(), "|") +
-      ")[A-Z]?)?[a-z]+[a-z0-9]*([A-Z][a-z0-9]+)*$";
+      llvm::join(EscapedAcronyms.begin(), EscapedAcronyms.end(), "|") +
+      ")[A-Z]?)?[a-z]+[a-z0-9]*([A-Z][a-z0-9]+)*" + "(" +
+      llvm::join(EscapedAcronyms.begin(), EscapedAcronyms.end(), "|") + ")?$";
 }
 }  // namespace
 
index a8a31e4..c06a8ff 100644 (file)
@@ -7,6 +7,7 @@
 // CHECK-FIXES: @property(assign, nonatomic) int notCamelCase;
 @property(assign, nonatomic) int camelCase;
 @property(strong, nonatomic) NSString *URLString;
+@property(strong, nonatomic) NSString *bundleID;
 @property(strong, nonatomic) NSString *URL_string;
 // CHECK-MESSAGES: :[[@LINE-1]]:40: warning: property name 'URL_string' should use lowerCamelCase style, according to the Apple Coding Guidelines [objc-property-declaration]
 @end