dougpuob added a comment.

Reply code review suggestions. I will upload my change later.



================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:483
+          std::move(CaseOptional), std::move(Prefix), std::move(Postfix),
+          std::move(HPOpt), HNOption});
+    } else {
----------------
aaron.ballman wrote:
> Would it make sense to declare `HNOption` as a typical local variable (no 
> need for the `clearAll()` API since you can default construct properly), and 
> pass an rvalue reference rather than an lvalue reference (so call 
> std::move()) here, as with the other arguments)?
OK~ I moved the `HNOption` to IdentifierNamingCheck class as its private data 
member. Then give value by constructor initializer list (instead of 
`clearAll()`).


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:549
+      for (const auto &CStr : HNOption.CString) {
+        auto Key = CStr.getKey().str();
+        if (ModifiedTypeName.find(Key) == 0) {
----------------
aaron.ballman wrote:
> You shouldn't use `auto` when the type isn't spelled out in the 
> initialization. (Same below)
OK~ Thank you. I will check them.


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:631
+
+  if (CRD->isUnion()) {
     return "";
----------------
aaron.ballman wrote:
> Elide braces around single-line if statements, per our usual coding 
> guidelines.
OK.


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:635-636
 
-  if (clang::Decl::Kind::EnumConstant == Decl->getKind() ||
-      clang::Decl::Kind::CXXMethod == Decl->getKind()||
-      clang::Decl::Kind::Function == Decl->getKind()) {
+  if (CRD->isStruct()) {
+    if (!isHungarianNotationOptionEnabled("TreatStructAsClass",
+                                          HNOption.General)) {
----------------
aaron.ballman wrote:
> Combine into a single `if`?
OK.


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:644
+  bool IsAbstractClass = false;
+  for (const auto *Method : CRD->methods()) {
+    if (Method->isPure()) {
----------------
aaron.ballman wrote:
> No need to do this manually, you can use `CXXRecordData::isAbstract()` since 
> it's already computed.
Nice, thank you.


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:651-658
+  std::string Prefix;
+  if (IsAbstractClass) {
+      Prefix = "I";
+  } else {
+      Prefix = "C";
+  }
+
----------------
aaron.ballman wrote:
> `return CRD->isAbstract() ? "I" : "C";`
OK.


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:662-666
+  std::string Name = ECD->getType().getAsString();
+  if (std::string::npos != Name.find("enum")) {
+    Name = Name.substr(strlen("enum"), Name.length() - strlen("enum"));
+    Name = Name.erase(0, Name.find_first_not_of(" "));
+  }
----------------
aaron.ballman wrote:
> This is a bit worrying -- can you not look at the `DeclContext` for the 
> `EnumConstantDecl` to find the parent `EnumDecl` and ask for its name 
> directly?
YES. I get the its `QualType` from `EnumConstantDecl::getType()`. Then get 
`EnumDecl` name via `QualType::getAsString()` (if enum tag name is "DataType", 
the string I get is "enum DataType").

```
static std::string getHungarianNotationEnumPrefix(const EnumConstantDecl *ECD) {
  std::string Name = ECD->getType().getAsString();
  // ...
}
```


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:703
+
+static std::string getDeclTypeName(const clang::NamedDecl *ND) {
+  const auto VD = dyn_cast<ValueDecl>(ND);
----------------
aaron.ballman wrote:
> You can drop the `clang::` bit.
OK.


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:704
+static std::string getDeclTypeName(const clang::NamedDecl *ND) {
+  const auto VD = dyn_cast<ValueDecl>(ND);
+  if (!VD) {
----------------
aaron.ballman wrote:
> When using type deduction, the coding style is to put all pointers and 
> qualifiers on the declaration as well (so we don't have to infer them from 
> context), so this should be `const auto *`.
OK, thank you.


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:806
+static std::string getHungarianNotationPrefix(
+    const clang::Decl *D,
+    IdentifierNamingCheck::HungarianNotationOption &HNOption) {
----------------
aaron.ballman wrote:
> Can drop the `clang::` bit.
OK.


================
Comment at: 
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp:808-809
+    IdentifierNamingCheck::HungarianNotationOption &HNOption) {
+  const auto ND = dyn_cast<NamedDecl>(D);
+  if (!ND) {
+    return "";
----------------
aaron.ballman wrote:
> `const auto *` and elide braces (I'll stop pointing these out, can you do a 
> pass over the whole check?)
Sure! it's what should I do, you have helped me a lots.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86671/new/

https://reviews.llvm.org/D86671

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to