[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