https://github.com/steakhal created 
https://github.com/llvm/llvm-project/pull/82921

This is the followup PR for #82599 to fix the cases where clang-format would 
regress the flow of the code.

>From 245de9ea5c33649ff7b3e359cd360361d4dc5ae3 Mon Sep 17 00:00:00 2001
From: Balazs Benics <benicsbal...@gmail.com>
Date: Sun, 25 Feb 2024 12:38:28 +0100
Subject: [PATCH] [clang][analyzer][NFC] Prepare for clang-format

---
 .../clang/Analysis/Analyses/ThreadSafetyTIL.h | 12 +++--
 .../Analysis/Analyses/ThreadSafetyTraverse.h  |  2 +
 .../Core/PathSensitive/ExprEngine.h           |  9 ++--
 .../Core/PathSensitive/MemRegion.h            |  2 +-
 .../Core/PathSensitive/ProgramStateTrait.h    |  2 +-
 clang/lib/Analysis/PathDiagnostic.cpp         |  3 +-
 clang/lib/Analysis/ThreadSafetyCommon.cpp     |  2 +
 clang/lib/Analysis/ThreadSafetyTIL.cpp        |  2 +
 .../Checkers/BasicObjCFoundationChecks.cpp    |  5 +-
 .../Checkers/CStringSyntaxChecker.cpp         | 20 ++++----
 .../Checkers/CheckerDocumentation.cpp         | 50 ++++++++++---------
 .../Checkers/ObjCAutoreleaseWriteChecker.cpp  |  2 +
 clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp |  2 +
 13 files changed, 64 insertions(+), 49 deletions(-)

diff --git a/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h 
b/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
index 65dd66ee093fe4..7d26d7439b8830 100644
--- a/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
+++ b/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
@@ -128,6 +128,7 @@ enum TIL_CastOpcode : unsigned char {
   CAST_objToPtr
 };
 
+// clang-format off
 const TIL_Opcode       COP_Min  = COP_Future;
 const TIL_Opcode       COP_Max  = COP_Branch;
 const TIL_UnaryOpcode  UOP_Min  = UOP_Minus;
@@ -136,6 +137,7 @@ const TIL_BinaryOpcode BOP_Min  = BOP_Add;
 const TIL_BinaryOpcode BOP_Max  = BOP_LogicOr;
 const TIL_CastOpcode   CAST_Min = CAST_none;
 const TIL_CastOpcode   CAST_Max = CAST_toInt;
+// clang-format on
 
 /// Return the name of a unary opcode.
 StringRef getUnaryOpcodeString(TIL_UnaryOpcode Op);
@@ -188,12 +190,14 @@ struct ValueType {
 
 inline ValueType::SizeType ValueType::getSizeType(unsigned nbytes) {
   switch (nbytes) {
-    case 1: return ST_8;
-    case 2: return ST_16;
-    case 4: return ST_32;
-    case 8: return ST_64;
+    // clang-format off
+    case  1: return ST_8;
+    case  2: return ST_16;
+    case  4: return ST_32;
+    case  8: return ST_64;
     case 16: return ST_128;
     default: return ST_0;
+    // clang-format on
   }
 }
 
diff --git a/clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h 
b/clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
index 6fc55130655a29..e4545106915b25 100644
--- a/clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
+++ b/clang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
@@ -440,6 +440,7 @@ class PrettyPrinter {
 
   // Return the precedence of a given node, for use in pretty printing.
   unsigned precedence(const SExpr *E) {
+    // clang-format off
     switch (E->opcode()) {
       case COP_Future:     return Prec_Atom;
       case COP_Undefined:  return Prec_Atom;
@@ -479,6 +480,7 @@ class PrettyPrinter {
       case COP_IfThenElse: return Prec_Other;
       case COP_Let:        return Prec_Decl;
     }
+    // clang-format on
     return Prec_MAX;
   }
 
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h 
b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
index ed5c4adb5e3d56..8c28f4c3a61217 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
@@ -393,8 +393,8 @@ class ExprEngine {
   ProgramStateRef processAssume(ProgramStateRef state, SVal cond,
                                 bool assumption);
 
-  /// processRegionChanges - Called by ProgramStateManager whenever a change 
is made
-  ///  to the store. Used to update checkers that track region values.
+  /// It's called by ProgramStateManager whenever a change is made to the 
store.
+  /// Used to update checkers that track region values.
   ProgramStateRef
   processRegionChanges(ProgramStateRef state,
                        const InvalidatedSymbols *invalidated,
@@ -587,9 +587,8 @@ class ExprEngine {
                                 ExplodedNode *Pred,
                                 ExplodedNodeSet &Dst);
 
-  /// evalEagerlyAssumeBinOpBifurcation - Given the nodes in 'Src', eagerly 
assume symbolic
-  ///  expressions of the form 'x != 0' and generate new nodes (stored in Dst)
-  ///  with those assumptions.
+  /// Given the nodes in \p Src, eagerly assume symbolic expressions of the 
form
+  /// `x != 0` and generate new nodes (stored in \p Dst) with those 
assumptions.
   void evalEagerlyAssumeBinOpBifurcation(ExplodedNodeSet &Dst, ExplodedNodeSet 
&Src,
                          const Expr *Ex);
 
diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h 
b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
index 151d3e57c1cb81..615d9e849da53c 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
@@ -526,7 +526,7 @@ class TypedRegion : public SubRegion {
   }
 };
 
-/// TypedValueRegion - An abstract class representing regions having a typed 
value.
+/// An abstract class representing regions having a typed value.
 class TypedValueRegion : public TypedRegion {
   void anchor() override;
 
diff --git 
a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h 
b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
index 15bec97c5be8fc..ded0c551b7f257 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
@@ -1,4 +1,4 @@
-//ProgramStateTrait.h - Partial implementations of ProgramStateTrait -*- C++ 
-*-
+// ProgramStateTrait.h - Partial implementations of ProgramStateTrait
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
diff --git a/clang/lib/Analysis/PathDiagnostic.cpp 
b/clang/lib/Analysis/PathDiagnostic.cpp
index 79f337a91ec8fa..6210eef6b44d29 100644
--- a/clang/lib/Analysis/PathDiagnostic.cpp
+++ b/clang/lib/Analysis/PathDiagnostic.cpp
@@ -788,8 +788,7 @@ PathDiagnosticRange
           }
           break;
         }
-          // FIXME: Provide better range information for different
-          //  terminators.
+        // FIXME: Provide better range information for different terminators.
         case Stmt::IfStmtClass:
         case Stmt::WhileStmtClass:
         case Stmt::DoStmtClass:
diff --git a/clang/lib/Analysis/ThreadSafetyCommon.cpp 
b/clang/lib/Analysis/ThreadSafetyCommon.cpp
index 2fe0f85897c3bc..cbb76d92e6ff4f 100644
--- a/clang/lib/Analysis/ThreadSafetyCommon.cpp
+++ b/clang/lib/Analysis/ThreadSafetyCommon.cpp
@@ -560,6 +560,7 @@ til::SExpr 
*SExprBuilder::translateBinAssign(til::TIL_BinaryOpcode Op,
 
 til::SExpr *SExprBuilder::translateBinaryOperator(const BinaryOperator *BO,
                                                   CallingContext *Ctx) {
+  // clang-format off
   switch (BO->getOpcode()) {
   case BO_PtrMemD:
   case BO_PtrMemI:
@@ -601,6 +602,7 @@ til::SExpr *SExprBuilder::translateBinaryOperator(const 
BinaryOperator *BO,
     // The clang CFG should have already processed both sides.
     return translate(BO->getRHS(), Ctx);
   }
+  // clang-format on
   return new (Arena) til::Undefined(BO);
 }
 
diff --git a/clang/lib/Analysis/ThreadSafetyTIL.cpp 
b/clang/lib/Analysis/ThreadSafetyTIL.cpp
index 652f953d2a6db5..368bab52b41872 100644
--- a/clang/lib/Analysis/ThreadSafetyTIL.cpp
+++ b/clang/lib/Analysis/ThreadSafetyTIL.cpp
@@ -26,6 +26,7 @@ StringRef til::getUnaryOpcodeString(TIL_UnaryOpcode Op) {
 }
 
 StringRef til::getBinaryOpcodeString(TIL_BinaryOpcode Op) {
+  // clang-format off
   switch (Op) {
     case BOP_Mul:      return "*";
     case BOP_Div:      return "/";
@@ -45,6 +46,7 @@ StringRef til::getBinaryOpcodeString(TIL_BinaryOpcode Op) {
     case BOP_LogicAnd: return "&&";
     case BOP_LogicOr:  return "||";
   }
+  // clang-format on
   return {};
 }
 
diff --git a/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp 
b/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
index c72a97cc01e914..d8b8a3ae2a646a 100644
--- a/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
@@ -387,6 +387,7 @@ static std::optional<uint64_t> GetCFNumberSize(ASTContext 
&Ctx, uint64_t i) {
 
   QualType T;
 
+  // clang-format off
   switch (i) {
     case kCFNumberCharType:     T = Ctx.CharTy;     break;
     case kCFNumberShortType:    T = Ctx.ShortTy;    break;
@@ -402,6 +403,7 @@ static std::optional<uint64_t> GetCFNumberSize(ASTContext 
&Ctx, uint64_t i) {
     default:
       return std::nullopt;
   }
+  // clang-format on
 
   return Ctx.getTypeSize(T);
 }
@@ -535,7 +537,8 @@ void CFNumberChecker::checkPreStmt(const CallExpr *CE,
 }
 
 
//===----------------------------------------------------------------------===//
-// CFRetain/CFRelease/CFMakeCollectable/CFAutorelease checking for null 
arguments.
+// checking for null arguments:
+//   CFRetain/CFRelease/CFMakeCollectable/CFAutorelease
 
//===----------------------------------------------------------------------===//
 
 namespace {
diff --git a/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp 
b/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp
index 888724f7ea3b29..9dcc8bce96d3a2 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp
@@ -11,18 +11,19 @@
 //    of bytes to copy.
 //
 
//===----------------------------------------------------------------------===//
-#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
 #include "clang/AST/Expr.h"
 #include "clang/AST/OperationKinds.h"
 #include "clang/AST/StmtVisitor.h"
 #include "clang/Analysis/AnalysisDeclContext.h"
 #include "clang/Basic/TargetInfo.h"
 #include "clang/Basic/TypeTraits.h"
+#include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
 #include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h"
 #include "clang/StaticAnalyzer/Core/Checker.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
 #include "llvm/ADT/SmallString.h"
+#include "llvm/Support/FormatVariadic.h"
 #include "llvm/Support/raw_ostream.h"
 
 using namespace clang;
@@ -228,11 +229,11 @@ void WalkAST::VisitCallExpr(CallExpr *CE) {
       llvm::raw_svector_ostream os(S);
       os << "Potential buffer overflow. ";
       if (!DstName.empty()) {
-        os << "Replace with 'sizeof(" << DstName << ") "
-              "- strlen(" << DstName <<") - 1'";
+        os << formatv("Replace with 'sizeof({0}) - strlen({0}) - 1'", DstName);
         os << " or u";
-      } else
+      } else {
         os << "U";
+      }
       os << "se a safer 'strlcat' API";
 
       BR.EmitBasicReport(FD, Checker, "Anti-pattern in the argument",
@@ -251,13 +252,10 @@ void WalkAST::VisitCallExpr(CallExpr *CE) {
 
       SmallString<256> S;
       llvm::raw_svector_ostream os(S);
-      os << "The third argument allows to potentially copy more bytes than it 
should. ";
-      os << "Replace with the value ";
-      if (!DstName.empty())
-          os << "sizeof(" << DstName << ")";
-      else
-          os << "sizeof(<destination buffer>)";
-      os << " or lower";
+      os << "The third argument allows to potentially copy more bytes ";
+      os << "than it should. Replace with the value ";
+      os << formatv("sizeof({0}) or lower",
+                    !DstName.empty() ? DstName : "<destination buffer>");
 
       BR.EmitBasicReport(FD, Checker, "Anti-pattern in the argument",
               "C String API", os.str(), Loc,
diff --git a/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp 
b/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
index 3e5e2b9139149d..6de0f611fda78f 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CheckerDocumentation.cpp
@@ -33,30 +33,32 @@ namespace ento {
 /// checking.
 ///
 /// \sa CheckerContext
-class CheckerDocumentation : public Checker< check::PreStmt<ReturnStmt>,
-                                       check::PostStmt<DeclStmt>,
-                                       check::PreObjCMessage,
-                                       check::PostObjCMessage,
-                                       check::ObjCMessageNil,
-                                       check::PreCall,
-                                       check::PostCall,
-                                       check::BranchCondition,
-                                       check::NewAllocator,
-                                       check::Location,
-                                       check::Bind,
-                                       check::DeadSymbols,
-                                       check::BeginFunction,
-                                       check::EndFunction,
-                                       check::EndAnalysis,
-                                       check::EndOfTranslationUnit,
-                                       eval::Call,
-                                       eval::Assume,
-                                       check::LiveSymbols,
-                                       check::RegionChanges,
-                                       check::PointerEscape,
-                                       check::ConstPointerEscape,
-                                       check::Event<ImplicitNullDerefEvent>,
-                                       check::ASTDecl<FunctionDecl> > {
+class CheckerDocumentation : public Checker<                           //
+                                 check::PreStmt<ReturnStmt>,           //
+                                 check::PostStmt<DeclStmt>,            //
+                                 check::PreObjCMessage,                //
+                                 check::PostObjCMessage,               //
+                                 check::ObjCMessageNil,                //
+                                 check::PreCall,                       //
+                                 check::PostCall,                      //
+                                 check::BranchCondition,               //
+                                 check::NewAllocator,                  //
+                                 check::Location,                      //
+                                 check::Bind,                          //
+                                 check::DeadSymbols,                   //
+                                 check::BeginFunction,                 //
+                                 check::EndFunction,                   //
+                                 check::EndAnalysis,                   //
+                                 check::EndOfTranslationUnit,          //
+                                 eval::Call,                           //
+                                 eval::Assume,                         //
+                                 check::LiveSymbols,                   //
+                                 check::RegionChanges,                 //
+                                 check::PointerEscape,                 //
+                                 check::ConstPointerEscape,            //
+                                 check::Event<ImplicitNullDerefEvent>, //
+                                 check::ASTDecl<FunctionDecl>          //
+                                 > {
 public:
   /// Pre-visit the Statement.
   ///
diff --git a/clang/lib/StaticAnalyzer/Checkers/ObjCAutoreleaseWriteChecker.cpp 
b/clang/lib/StaticAnalyzer/Checkers/ObjCAutoreleaseWriteChecker.cpp
index 514f53b4804f50..4ef43e5f4d2fbc 100644
--- a/clang/lib/StaticAnalyzer/Checkers/ObjCAutoreleaseWriteChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/ObjCAutoreleaseWriteChecker.cpp
@@ -53,6 +53,7 @@ class ObjCAutoreleaseWriteChecker : public 
Checker<check::ASTCodeBody> {
                         AnalysisManager &AM,
                         BugReporter &BR) const;
 private:
+  // clang-format off
   std::vector<std::string> SelectorsWithAutoreleasingPool = {
       // Common to NSArray,  NSSet, NSOrderedSet
       "enumerateObjectsUsingBlock:",
@@ -92,6 +93,7 @@ class ObjCAutoreleaseWriteChecker : public 
Checker<check::ASTCodeBody> {
       "indexInRange:options:passingTest:",
       "indexesInRange:options:passingTest:"
   };
+  // clang-format on
 
   std::vector<std::string> FunctionsWithAutoreleasingPool = {
       "dispatch_async", "dispatch_group_async", "dispatch_barrier_async"};
diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp 
b/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
index c3fc56ac30ee9f..a7ffee7605c7bb 100644
--- a/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
@@ -112,6 +112,7 @@ void ExprEngine::VisitBinaryOperator(const BinaryOperator* 
B,
 
     assert (B->isCompoundAssignmentOp());
 
+    // clang-format off
     switch (Op) {
       default:
         llvm_unreachable("Invalid opcode for compound assignment.");
@@ -126,6 +127,7 @@ void ExprEngine::VisitBinaryOperator(const BinaryOperator* 
B,
       case BO_XorAssign: Op = BO_Xor; break;
       case BO_OrAssign:  Op = BO_Or;  break;
     }
+    // clang-format on
 
     // Perform a load (the LHS).  This performs the checks for
     // null dereferences, and so on.

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

Reply via email to