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