[PATCH] D118370: [clang-tidy] bugprone-signal-handler: Message improvement and code refactoring.

Richard via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 28 12:34:31 PST 2022


LegalizeAdulthood added inline comments.


================
Comment at: clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.cpp:146
+  if (!HandlerDecl->hasBody()) {
+    checkFunction(HandlerDecl, HandlerExpr);
     return;
----------------
Can we put `(void) checkFunction(...)` here to make it clear
we're intentionally ignoring the return value?


================
Comment at: clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h:36
 private:
-  bool isFunctionAsyncSafe(const FunctionDecl *FD) const;
+  /// Check if a function is allowed as signal handler.
+  /// Should test properties of the function, and check in the code body.
----------------
... `as a signal handler`


================
Comment at: clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h:37
+  /// Check if a function is allowed as signal handler.
+  /// Should test properties of the function, and check in the code body.
+  /// Should not check function calls in the code (this part is done by the call
----------------
`Should test the properties` ...


================
Comment at: clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h:42
+  /// @param CallOrRef Location of the call to this function (in another
+  /// function) or the reference to the function (if it is used as registered
+  /// signal handler). This is the location where diagnostics are to be placed.
----------------
... `as a registered`


================
Comment at: clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h:44
+  /// signal handler). This is the location where diagnostics are to be placed.
+  /// @return true only if problem was found in the function.
+  bool checkFunction(const FunctionDecl *FD, const Expr *CallOrRef);
----------------
... `only if a problem` ...


================
Comment at: clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h:48
   bool isSystemCallAsyncSafe(const FunctionDecl *FD) const;
-  void reportBug(const FunctionDecl *CalledFunction, const Expr *CallOrRef,
-                 bool DirectHandler);
-  void reportHandlerCommon(llvm::df_iterator<clang::CallGraphNode *> Itr,
-                           const CallExpr *SignalCall,
-                           const FunctionDecl *HandlerDecl,
-                           const Expr *HandlerRef);
+  /// Add bug report notes to show the call chain of functions from signal
+  /// handler to an actual called function (from it).
----------------
... `from a signal`


================
Comment at: clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.h:51
+  /// @param Itr Position during a call graph depth-first iteration. It contains
+  /// the "path" (call chain) from signal handler to the actual found function
+  /// call.
----------------
.. `from the signal handler` ...


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D118370



More information about the cfe-commits mailing list