/// Find &&/|| operations that include the same argument more than once //# A common source of false positives is when the expression, or //# another expresssion in the same && or || operation, performs a //# side effect. /// // Confidence: Moderate // Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2. // Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. // URL: http://coccinelle.lip6.fr/ // Comments: // Options: --no-includes --include-headers virtual context virtual org virtual report @r expression@ expression E; position p; @@ ( E@p || ... || E | E@p && ... && E ) @bad@ expression r.E,e1,e2,fn; position r.p; assignment operator op; @@ ( E@p & <+... \(fn(...)\|e1 op e2\|e1++\|e1--\|++e1\|--e1\) ...+> ) @depends on context && !bad@ expression r.E; position r.p; @@ *E@p @script:python depends on org && !bad@ p << r.p; @@ cocci.print_main("duplicated argument to && or ||",p) @script:python depends on report && !bad@ p << r.p; @@ coccilib.report.print_report(p[0],"duplicated argument to && or ||")