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