aaron.ballman added inline comments.

================
Comment at: clang-tools-extra/clang-tidy/cert/SignalHandlerCheck.cpp:91
+      hasObjectExpression(ignoringParenImpCasts(declRefExpr(
+          anyOf(hasType(recordDecl(hasName("sigaction"))),
+                hasType(pointsTo(recordDecl(hasName("sigaction"))))))));
----------------
You should be checking for the fully-qualified name so that this doesn't trip 
it up:
```
namespace awesome {
struct sigaction {
  const char *terrible = "haha";
};
}
```


================
Comment at: clang-tools-extra/clang-tidy/cert/SignalHandlerCheck.cpp:92
+          anyOf(hasType(recordDecl(hasName("sigaction"))),
+                hasType(pointsTo(recordDecl(hasName("sigaction"))))))));
+  auto HandlerMember = member(hasName("sa_handler"));
----------------
I'd like to see a test case that this works properly with references in C++ (in 
addition to pointers).


================
Comment at: clang-tools-extra/test/clang-tidy/checkers/cert-sig30-c.cpp:152
+  SA->sa_sigaction = sigaction_handler5;
+}
----------------
I'd like to see a test case that shows this works if the `sigaction` object is 
within another structure. e.g.,
```
struct foo {
  struct sigaction act;
};

void test(void) {
  struct foo f;
  f.act.sa_handler = handler_sigaction5;
}
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D88140

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

Reply via email to