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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits