1 // SPDX-License-Identifier: GPL-2.0-only 1 // SPDX-License-Identifier: GPL-2.0-only 2 /// Find &&/|| operations that include the sam 2 /// Find &&/|| operations that include the same argument more than once 3 //# A common source of false positives is when 3 //# A common source of false positives is when the expression, or 4 //# another expresssion in the same && or || o 4 //# another expresssion in the same && or || operation, performs a 5 //# side effect. 5 //# side effect. 6 /// 6 /// 7 // Confidence: Moderate 7 // Confidence: Moderate 8 // Copyright: (C) 2010 Nicolas Palix, DIKU. 8 // Copyright: (C) 2010 Nicolas Palix, DIKU. 9 // Copyright: (C) 2010 Julia Lawall, DIKU. 9 // Copyright: (C) 2010 Julia Lawall, DIKU. 10 // Copyright: (C) 2010 Gilles Muller, INRIA/Li 10 // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. 11 // URL: https://coccinelle.gitlabpages.inria.f !! 11 // URL: http://coccinelle.lip6.fr/ 12 // Comments: 12 // Comments: 13 // Options: --no-includes --include-headers 13 // Options: --no-includes --include-headers 14 14 15 virtual context 15 virtual context 16 virtual org 16 virtual org 17 virtual report 17 virtual report 18 18 19 @r expression@ 19 @r expression@ 20 expression E; 20 expression E; 21 position p; 21 position p; 22 @@ 22 @@ 23 23 24 ( 24 ( 25 E@p || ... || E 25 E@p || ... || E 26 | 26 | 27 E@p && ... && E 27 E@p && ... && E 28 ) 28 ) 29 29 30 @bad@ 30 @bad@ 31 expression r.E,e1,e2,fn; 31 expression r.E,e1,e2,fn; 32 position r.p; 32 position r.p; 33 assignment operator op; 33 assignment operator op; 34 @@ 34 @@ 35 35 36 ( 36 ( 37 E@p 37 E@p 38 & 38 & 39 <+... \(fn(...)\|e1 op e2\|e1++\|e1--\|++e1\| 39 <+... \(fn(...)\|e1 op e2\|e1++\|e1--\|++e1\|--e1\) ...+> 40 ) 40 ) 41 41 42 @depends on context && !bad@ 42 @depends on context && !bad@ 43 expression r.E; 43 expression r.E; 44 position r.p; 44 position r.p; 45 @@ 45 @@ 46 46 47 *E@p 47 *E@p 48 48 49 @script:python depends on org && !bad@ 49 @script:python depends on org && !bad@ 50 p << r.p; 50 p << r.p; 51 @@ 51 @@ 52 52 53 cocci.print_main("duplicated argument to && or 53 cocci.print_main("duplicated argument to && or ||",p) 54 54 55 @script:python depends on report && !bad@ 55 @script:python depends on report && !bad@ 56 p << r.p; 56 p << r.p; 57 @@ 57 @@ 58 58 59 coccilib.report.print_report(p[0],"duplicated 59 coccilib.report.print_report(p[0],"duplicated argument to && or ||")
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.