1/// Find confusingly indented code in or after an if. An if branch should 2/// be indented. The code following an if should not be indented. 3/// Sometimes, code after an if that is indented is actually intended to be 4/// part of the if branch. 5/// 6/// This has a high rate of false positives, because Coccinelle's column 7/// calculation does not distinguish between spaces and tabs, so code that 8/// is not visually aligned may be considered to be in the same column. 9/// 10// Confidence: Low 11// Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2. 12// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. 13// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. 14// URL: http://coccinelle.lip6.fr/ 15// Comments: 16// Options: --no-includes --include-headers 17 18virtual org 19virtual report 20 21@r disable braces4@ 22position p1,p2; 23statement S1,S2; 24@@ 25 26( 27if (...) { ... } 28| 29if (...) S1@p1 S2@p2 30) 31 32@script:python depends on org@ 33p1 << r.p1; 34p2 << r.p2; 35@@ 36 37if (p1[0].column == p2[0].column): 38 cocci.print_main("branch",p1) 39 cocci.print_secs("after",p2) 40 41@script:python depends on report@ 42p1 << r.p1; 43p2 << r.p2; 44@@ 45 46if (p1[0].column == p2[0].column): 47 msg = "code aligned with following code on line %s" % (p2[0].line) 48 coccilib.report.print_report(p1[0],msg) 49