// semmle-extractor-options: /r:System.Runtime.Extensions.dll using System; using System.IO; class UseBraces { static void f() { } static void g() { } static void h() { } static void Main(string[] args) { int x = 0, y; var branches = new int[10]; var py = new StreamReader("foo"); // If-then statement if (1 == 1) { f(); } g(); // GOOD if (1 == 1) f(); g(); // GOOD if (1 == 1) f(); g(); // BAD if (1 == 1) f(); g(); // BAD // If-then-else statement if (1 + 2 == 3) { f(); } else { g(); } g(); // GOOD if (1 == 2) f(); else g(); f(); // GOOD if (x > 1) { f(); } else f(); g(); // BAD if (x > 1) { f(); } else f(); g(); // BAD // While statement while (x > 1) { f(); } g(); // GOOD while (x > 1) f(); g(); while (x > 1) f(); g(); // BAD g(); // GOOD while (x > 1) f(); g(); // BAD while (x > 1) if (x != null) x = 1; // Do-while statement do f(); while (x > 1); g(); // GOOD // For statement for (int i = 0; i < 10; ++i) { f(); } g(); for (int i = 0; i < 10; ++i) f(); g(); for (int i = 0; i < 10; ++i) f(); g(); // BAD for (int i = 0; i < 10; ++i) f(); g(); // BAD // Foreach statement foreach (var b in branches) py.Dispose(); f(); foreach (var b in branches) { py.Dispose(); } f(); foreach (var b in branches) f(); g(); // BAD foreach (var b in branches) f(); g(); // BAD // Nested ifs if (x > 1) if (x > 1) f(); g(); if (x > 1) ; else if (x > 1) f(); g(); if (x > 1) ; else if (x > 1) f(); g(); // BAD } }