dougpuob updated this revision to Diff 297443.
dougpuob added a comment.
- Support to add Class prefix for Hungarian Notation.
- Support to add Enum prefix for Hungarian Notation.
- Support `unsigned long long`, `ULONG`, and `HANDLE` types and others.
- Support options for Hungarian Notation in config file.
- Added more test cases.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D86671/new/
https://reviews.llvm.org/D86671
Files:
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h
clang-tools-extra/test/clang-tidy/checkers/readability-identifier-naming-hungarian-notation-cfgfile.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/readability-identifier-naming-hungarian-notation-cfgfile.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/checkers/readability-identifier-naming-hungarian-notation-cfgfile.cpp
+++ clang-tools-extra/test/clang-tidy/checkers/readability-identifier-naming-hungarian-notation-cfgfile.cpp
@@ -72,34 +72,34 @@
// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.long-int , value: li }, \
// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.long , value: l }, \
// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.ptrdiff_t , value: p }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.BOOL , value: b }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.BOOLEAN , value: b }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.BYTE , value: by }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.CHAR , value: c }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.UCHAR , value: uc }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.SHORT , value: s }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.USHORT , value: us }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.WORD , value: w }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.DWORD , value: dw }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.DWORD32 , value: dw32 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.DWORD64 , value: dw64 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.LONG , value: l }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.ULONG , value: ul }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.ULONG32 , value: ul32 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.ULONG64 , value: ul64 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.ULONGLONG , value: ull }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.HANDLE , value: h }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.INT , value: i }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.INT8 , value: i8 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.INT16 , value: i16 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.INT32 , value: i32 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.INT64 , value: i64 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.UINT , value: ui }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.UINT8 , value: u8 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.UINT16 , value: u16 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.UINT32 , value: u32 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.UINT64 , value: u64 }, \
-// RUN: { key: readability-identifier-naming.HungarianNotation.PrimitiveType.PVOID , value: p }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.BOOL , value: b }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.BOOLEAN , value: b }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.BYTE , value: by }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.CHAR , value: c }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.UCHAR , value: uc }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.SHORT , value: s }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.USHORT , value: us }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.WORD , value: w }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.DWORD , value: dw }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.DWORD32 , value: dw32 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.DWORD64 , value: dw64 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.LONG , value: l }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.ULONG , value: ul }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.ULONG32 , value: ul32 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.ULONG64 , value: ul64 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.ULONGLONG , value: ull }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.HANDLE , value: h }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.INT , value: i }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.INT8 , value: i8 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.INT16 , value: i16 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.INT32 , value: i32 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.INT64 , value: i64 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.UINT , value: ui }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.UINT8 , value: u8 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.UINT16 , value: u16 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.UINT32 , value: u32 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.UINT64 , value: u64 }, \
+// RUN: { key: readability-identifier-naming.HungarianNotation.UserDefinedType.PVOID , value: p }, \
// RUN: ]}'
// clang-format off
Index: clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h
===================================================================
--- clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h
+++ clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h
@@ -53,6 +53,7 @@
llvm::StringMap<std::string> Options;
llvm::StringMap<std::string> CString;
llvm::StringMap<std::string> PrimitiveType;
+ llvm::StringMap<std::string> UserDefinedType;
llvm::StringMap<std::string> DerivedType;
};
Index: clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
+++ clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
@@ -165,6 +165,14 @@
m(long-int) \
m(long) \
m(ptrdiff_t) \
+
+static StringRef const HungarainNotationPrimitiveTypes[] = {
+#define STRINGIZE(v) #v,
+ HUNGARIAN_NOTATION_PRIMITIVE_TYPES(STRINGIZE)
+#undef STRINGIZE
+};
+
+#define HUNGARIAN_NOTATION_USER_DEFINED_TYPES(m) \
m(BOOL) \
m(BOOLEAN) \
m(BYTE) \
@@ -194,12 +202,13 @@
m(UINT64) \
m(PVOID) \
-static StringRef const HungarainNotationPrimitiveTypes[] = {
+static StringRef const HungarainNotationUserDefinedTypes[] = {
#define STRINGIZE(v) #v,
- HUNGARIAN_NOTATION_PRIMITIVE_TYPES(STRINGIZE)
+ HUNGARIAN_NOTATION_USER_DEFINED_TYPES(STRINGIZE)
#undef STRINGIZE
};
+
#undef NAMING_KEYS
// clang-format on
@@ -280,36 +289,7 @@
{"long long", "ll" },
{"long int", "li" },
{"long", "l" },
- {"ptrdiff_t", "p" },
- // Windows data types
- {"BOOL", "b" },
- {"BOOLEAN", "b" },
- {"BYTE", "by" },
- {"CHAR", "c" },
- {"UCHAR", "uc" },
- {"SHORT", "s" },
- {"USHORT", "us" },
- {"WORD", "w" },
- {"DWORD", "dw" },
- {"DWORD32", "dw32"},
- {"DWORD64", "dw64"},
- {"LONG", "l" },
- {"ULONG", "ul" },
- {"ULONG32", "ul32"},
- {"ULONG64", "ul64"},
- {"ULONGLONG", "ull" },
- {"HANDLE", "h" },
- {"INT", "i" },
- {"INT8", "i8" },
- {"INT16", "i16" },
- {"INT32", "i32" },
- {"INT64", "i64" },
- {"UINT", "ui" },
- {"UINT8", "u8" },
- {"UINT16", "u16" },
- {"UINT32", "u32" },
- {"UINT64", "u64" },
- {"PVOID", "p" }};
+ {"ptrdiff_t", "p" }};
// clang-format on
for (auto &Type : PrimitiveTypes) {
std::string Val = HNOption->PrimitiveType.lookup(Type.getKey());
@@ -317,6 +297,45 @@
HNOption->PrimitiveType.insert({Type.getKey(), Type.getValue()});
}
}
+
+ // clang-format off
+ const static llvm::StringMap<std::string> UserDefinedTypes = {
+ // Windows data types
+ {"BOOL", "b" },
+ {"BOOLEAN", "b" },
+ {"BYTE", "by" },
+ {"CHAR", "c" },
+ {"UCHAR", "uc" },
+ {"SHORT", "s" },
+ {"USHORT", "us" },
+ {"WORD", "w" },
+ {"DWORD", "dw" },
+ {"DWORD32", "dw32"},
+ {"DWORD64", "dw64"},
+ {"LONG", "l" },
+ {"ULONG", "ul" },
+ {"ULONG32", "ul32"},
+ {"ULONG64", "ul64"},
+ {"ULONGLONG", "ull" },
+ {"HANDLE", "h" },
+ {"INT", "i" },
+ {"INT8", "i8" },
+ {"INT16", "i16" },
+ {"INT32", "i32" },
+ {"INT64", "i64" },
+ {"UINT", "ui" },
+ {"UINT8", "u8" },
+ {"UINT16", "u16" },
+ {"UINT32", "u32" },
+ {"UINT64", "u64" },
+ {"PVOID", "p" } };
+ // clang-format on
+ for (auto &Type : UserDefinedTypes) {
+ std::string Val = HNOption->UserDefinedType.lookup(Type.getKey());
+ if (Val.empty()) {
+ HNOption->UserDefinedType.insert({Type.getKey(), Type.getValue()});
+ }
+ }
}
static void getHungarianNotationFileConfig(
@@ -373,6 +392,15 @@
HNOption->PrimitiveType.insert({Type, Val});
}
}
+
+ for (auto const &WDType : HungarainNotationUserDefinedTypes) {
+ std::string Key = Section + "UserDefinedType." + WDType.str();
+ std::string Val = Options.get(Key, "");
+ std::string Type = WDType.str();
+ if (!Val.empty()) {
+ HNOption->UserDefinedType.insert({Type, Val});
+ }
+ }
}
static std::vector<llvm::Optional<IdentifierNamingCheck::NamingStyle>>
@@ -516,6 +544,17 @@
}
}
+ // User-Defined types
+ if (PrefixStr.empty()) {
+ for (const auto &Type : HNOption.UserDefinedType) {
+ const auto &key = Type.getKey().str();
+ if (ModifiedTypeName == key) {
+ PrefixStr = Type.getValue();
+ break;
+ }
+ }
+ }
+
for (size_t Idx = 0; Idx < PtrCount; Idx++) {
PrefixStr.insert(0, HNOption.DerivedType.lookup("Pointer"));
}
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits