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