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