[clang] [alpha.webkit.UncountedCallArgsChecker] Detect & ignore trivial function calls. (PR #81808)

via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 14 16:34:01 PST 2024


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff fe20a759fcd20e1755ea1b34c5e6447a787925dc 26f7904095ddd54ab54a94b3ae84db61d2135833 -- clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.h clang/lib/StaticAnalyzer/Checkers/WebKit/UncountedCallArgsChecker.cpp clang/test/Analysis/Checkers/WebKit/call-args.cpp clang/test/Analysis/Checkers/WebKit/uncounted-obj-arg.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
index b2169bf023..528ca77c49 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
@@ -233,10 +233,10 @@ bool isSingleton(const FunctionDecl *F) {
   const auto &Name = safeGetName(F);
   std::string SingletonStr = "singleton";
   auto index = Name.find(SingletonStr);
-  return index != std::string::npos && index == Name.size() - SingletonStr.size();
+  return index != std::string::npos &&
+         index == Name.size() - SingletonStr.size();
 }
 
-
 // We only care about statements so let's use the simple
 // (non-recursive) visitor.
 class TrivialFunctionAnalysisVisitor
@@ -255,7 +255,7 @@ class TrivialFunctionAnalysisVisitor
 public:
   using CacheTy = TrivialFunctionAnalysis::CacheTy;
 
-  TrivialFunctionAnalysisVisitor(CacheTy &Cache): Cache(Cache) {}
+  TrivialFunctionAnalysisVisitor(CacheTy &Cache) : Cache(Cache) {}
 
   bool VisitStmt(const Stmt *S) {
     // All statements are non-trivial unless overriden later.
@@ -263,9 +263,7 @@ public:
     return false;
   }
 
-  bool VisitDeclStmt(const DeclStmt *DS) {
-    return VisitChildren(DS);
-  }
+  bool VisitDeclStmt(const DeclStmt *DS) { return VisitChildren(DS); }
 
   bool VisitCompoundStmt(const CompoundStmt *CS) {
     // A compound statement is allowed as long each individual sub-statement
@@ -278,25 +276,15 @@ public:
     return Visit(RS->getRetValue());
   }
 
-  bool VisitDoStmt(const DoStmt *DS) {
-    return VisitChildren(DS);
-  }
+  bool VisitDoStmt(const DoStmt *DS) { return VisitChildren(DS); }
 
-  bool VisitIfStmt(const IfStmt *IS) {
-    return VisitChildren(IS);
-  }
+  bool VisitIfStmt(const IfStmt *IS) { return VisitChildren(IS); }
 
-  bool VisitSwitchStmt(const SwitchStmt *SS) {
-    return VisitChildren(SS);
-  }
-  
-  bool VisitCaseStmt(const CaseStmt* CS) {
-    return VisitChildren(CS);
-  }
+  bool VisitSwitchStmt(const SwitchStmt *SS) { return VisitChildren(SS); }
 
-  bool VisitDefaultStmt(const DefaultStmt* DS) {
-    return VisitChildren(DS);
-  }
+  bool VisitCaseStmt(const CaseStmt *CS) { return VisitChildren(CS); }
+
+  bool VisitDefaultStmt(const DefaultStmt *DS) { return VisitChildren(DS); }
 
   bool VisitUnaryOperator(const UnaryOperator *UO) {
     // Operator '*' and '!' are allowed as long as the operand is trivial.
@@ -316,7 +304,7 @@ public:
     // Ternary operators are trivial if their conditions & values are trivial.
     return VisitChildren(CO);
   }
-  
+
   bool VisitDeclRefExpr(const DeclRefExpr *DRE) {
     if (auto *decl = DRE->getDecl()) {
       if (isa<ParmVarDecl>(decl))
@@ -336,7 +324,7 @@ public:
 
     for (const Expr *Arg : CE->arguments()) {
       if (Arg && !Visit(Arg))
-        return false;      
+        return false;
     }
 
     auto *Callee = CE->getDirectCallee();
@@ -344,8 +332,8 @@ public:
       return false;
     const auto &Name = safeGetName(Callee);
 
-    if (Name == "WTFCrashWithInfo" || Name == "WTFBreakpointTrap"
-        || Name == "compilerFenceForCrash" || Name == "__builtin_unreachable")
+    if (Name == "WTFCrashWithInfo" || Name == "WTFBreakpointTrap" ||
+        Name == "compilerFenceForCrash" || Name == "__builtin_unreachable")
       return true;
 
     return TrivialFunctionAnalysis::isTrivialImpl(Callee, Cache);
@@ -354,7 +342,7 @@ public:
   bool VisitCXXMemberCallExpr(const CXXMemberCallExpr *MCE) {
     for (const Expr *Arg : MCE->arguments()) {
       if (Arg && !Visit(Arg))
-        return false;      
+        return false;
     }
 
     bool TrivialThis = Visit(MCE->getImplicitObjectArgument());
@@ -366,7 +354,6 @@ public:
     if (IsGetterOfRefCounted && *IsGetterOfRefCounted)
       return true;
 
-
     // Recursively descend into the callee to confirm that it's trivial as well.
     return TrivialFunctionAnalysis::isTrivialImpl(MCE->getDirectCallee(),
                                                   Cache);
@@ -378,27 +365,20 @@ public:
         return false;
 
     // Recursively descend into the callee to confirm that it's trivial.
-    return TrivialFunctionAnalysis::isTrivialImpl(CE->getConstructor(),
-                                                  Cache);
+    return TrivialFunctionAnalysis::isTrivialImpl(CE->getConstructor(), Cache);
   }
 
-  bool VisitImplicitCastExpr(const ImplicitCastExpr *ICE)
-  {
+  bool VisitImplicitCastExpr(const ImplicitCastExpr *ICE) {
     return Visit(ICE->getSubExpr());
   }
 
-  bool VisitExplicitCastExpr(const ExplicitCastExpr *ECE)
-  {
+  bool VisitExplicitCastExpr(const ExplicitCastExpr *ECE) {
     return Visit(ECE->getSubExpr());
   }
 
-  bool VisitParenExpr(const ParenExpr *PE)
-  {
-    return Visit(PE->getSubExpr());
-  }
+  bool VisitParenExpr(const ParenExpr *PE) { return Visit(PE->getSubExpr()); }
 
-  bool VisitInitListExpr(const InitListExpr *ILE)
-  {
+  bool VisitInitListExpr(const InitListExpr *ILE) {
     for (const Expr *Child : ILE->inits()) {
       if (Child && !Visit(Child))
         return false;
@@ -417,27 +397,17 @@ public:
   }
 
   // Constant literal expressions are always trivial
-  bool VisitIntegerLiteral(const IntegerLiteral *E) {
-    return true;
-  }
+  bool VisitIntegerLiteral(const IntegerLiteral *E) { return true; }
 
-  bool VisitFloatingLiteral(const FloatingLiteral *E) {
-    return true;
-  }
+  bool VisitFloatingLiteral(const FloatingLiteral *E) { return true; }
 
-  bool VisitFixedPointLiteral(const FixedPointLiteral *E) {
-    return true;
-  }
+  bool VisitFixedPointLiteral(const FixedPointLiteral *E) { return true; }
 
-  bool VisitCharacterLiteral(const CharacterLiteral *E) {
-    return true;
-  }
+  bool VisitCharacterLiteral(const CharacterLiteral *E) { return true; }
 
-  bool VisitStringLiteral(const StringLiteral *E) {
-    return true;
-  }
+  bool VisitStringLiteral(const StringLiteral *E) { return true; }
 
-  bool VisitConstantExpr(const ConstantExpr* CE) {
+  bool VisitConstantExpr(const ConstantExpr *CE) {
     // Constant expressions are trivial.
     return true;
   }
diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.h b/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.h
index a5ea3900ce..e07cd31395 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.h
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.h
@@ -70,9 +70,7 @@ bool isSingleton(const FunctionDecl *F);
 class TrivialFunctionAnalysis {
 public:
   /// \returns true if \p D is a "trivial" function.
-  bool isTrivial(const Decl *D) const {
-    return isTrivialImpl(D, TheCache);
-  }
+  bool isTrivial(const Decl *D) const { return isTrivialImpl(D, TheCache); }
 
 private:
   friend class TrivialFunctionAnalysisVisitor;

``````````

</details>


https://github.com/llvm/llvm-project/pull/81808


More information about the cfe-commits mailing list