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