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