[clang-tools-extra] [clang-tidy] Add new check 'bugprone-inconsistent-ifelse-braces' (PR #162361)

Victor Chernyakin via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 27 14:58:41 PDT 2025


================
@@ -0,0 +1,123 @@
+// RUN: %check_clang_tidy %s bugprone-inconsistent-ifelse-braces %t
+
+bool cond(const char *) { return false; }
+
+void do_something(const char *) {}
+
+// Positive tests.
+void f() {
+  if (cond("if0") /*comment*/) do_something("if-same-line");
+  else {
+  }
+  // CHECK-MESSAGES: :[[@LINE-3]]:31: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: if (cond("if0") /*comment*/) { do_something("if-same-line");
+  // CHECK-FIXES: } else {
+
+  if (cond("if0.1") /*comment*/) {
+  } else do_something("else-same-line");
+  // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: } else { do_something("else-same-line");
+  // CHECK-FIXES: }
+
+  if (cond("if1"))
+    do_something("if-single-line");
+  else {
+  }
+  // CHECK-MESSAGES: :[[@LINE-4]]:19: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: if (cond("if1")) {
+  // CHECK-FIXES: } else {
+
+  if (cond("if1.1")) {
+  } else
+    do_something("else-single-line");
+  // CHECK-MESSAGES: :[[@LINE-2]]:9: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: } else {
+  // CHECK-FIXES: }
+
+  if (cond("if2") /*comment*/)
+    // some comment
+    do_something("if-multi-line");
+  else {
+  }
+  // CHECK-MESSAGES: :[[@LINE-5]]:31: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: if (cond("if2") /*comment*/) {
+  // CHECK-FIXES: } else {
+
+  if (cond("if2.1") /*comment*/) {
+  } else
+    // some comment
+    do_something("else-multi-line");
+  // CHECK-MESSAGES: :[[@LINE-3]]:9: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: } else {
+  // CHECK-FIXES: }
+
+  if (cond("if3")) do_something("elseif-same-line");
+  else if (cond("if3")) {
+  } else {
+  }
+  // CHECK-MESSAGES: :[[@LINE-4]]:19: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: if (cond("if3")) { do_something("elseif-same-line");
+  // CHECK-FIXES: } else if (cond("if3")) {
+
+  if (cond("if3.1")) {
+  } else if (cond("if3.1")) do_something("elseif-same-line");
+  else {
+  }
+  // CHECK-MESSAGES: :[[@LINE-3]]:28: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: } else if (cond("if3.1")) { do_something("elseif-same-line");
+  // CHECK-FIXES: } else {
+
+  if (cond("if3.2")) {
+  } else if (cond("if3.2")) {
+  } else do_something("else-same-line");
+  // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: } else { do_something("else-same-line");
+  // CHECK-FIXES: }
+
+  if (cond("if4-outer"))
+    if (cond("if4-inner"))
+      do_something("if-single-line");
+    else {
+    }
+  else {
+  }
+  // CHECK-MESSAGES: :[[@LINE-7]]:25: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-MESSAGES: :[[@LINE-7]]:27: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: if (cond("if4-outer")) {
+  // CHECK-FIXES: if (cond("if4-inner")) {
+  // CHECK-FIXES: } else {
+  // CHECK-FIXES: } else {
+
+  if (cond("if5"))
+      do_something("if-single-line");
+  else if (cond("if5")) {
+  }
+  // CHECK-MESSAGES: :[[@LINE-4]]:19: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: if (cond("if5")) {
+  // CHECK-FIXES: } else if (cond("if5")) {
+
+  if (cond("if5.1")) {
+  } else if (cond("if5.1"))
+      do_something("elseif-single-line");
+  // CHECK-MESSAGES: :[[@LINE-2]]:28: warning: <message> [bugprone-inconsistent-ifelse-braces]
+  // CHECK-FIXES: } else if (cond("if5.1")) {
+  // CHECK-FIXES: }
+}
+
+// Negative tests.
+void g() {
+  if (cond("if0")) {
+    do_something("if-single-line");
+  } else if (cond("if0")) {
+    do_something("elseif-single-line");
+  } else {
+    do_something("else-single-line");
+  }
+
+  if (cond("if1"))
+    do_something("if-single-line");
+  else if (cond("if1"))
+    do_something("elseif-single-line");
+  else
+    do_something("else-single-line");
+}
----------------
localspook wrote:

It would be good to add some tests with `if constexpr`

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


More information about the cfe-commits mailing list