1*53ee8cc1Swenshuai.xi/// Find &&/|| operations that include the same argument more than once 2*53ee8cc1Swenshuai.xi//# A common source of false positives is when the argument performs a side 3*53ee8cc1Swenshuai.xi//# effect. 4*53ee8cc1Swenshuai.xi/// 5*53ee8cc1Swenshuai.xi// Confidence: Moderate 6*53ee8cc1Swenshuai.xi// Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2. 7*53ee8cc1Swenshuai.xi// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. 8*53ee8cc1Swenshuai.xi// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. 9*53ee8cc1Swenshuai.xi// URL: http://coccinelle.lip6.fr/ 10*53ee8cc1Swenshuai.xi// Comments: 11*53ee8cc1Swenshuai.xi// Options: -no_includes -include_headers 12*53ee8cc1Swenshuai.xi 13*53ee8cc1Swenshuai.xivirtual context 14*53ee8cc1Swenshuai.xivirtual org 15*53ee8cc1Swenshuai.xivirtual report 16*53ee8cc1Swenshuai.xi 17*53ee8cc1Swenshuai.xi@r expression@ 18*53ee8cc1Swenshuai.xiexpression E; 19*53ee8cc1Swenshuai.xiposition p; 20*53ee8cc1Swenshuai.xi@@ 21*53ee8cc1Swenshuai.xi 22*53ee8cc1Swenshuai.xi( 23*53ee8cc1Swenshuai.xi* E@p 24*53ee8cc1Swenshuai.xi || ... || E 25*53ee8cc1Swenshuai.xi| 26*53ee8cc1Swenshuai.xi* E@p 27*53ee8cc1Swenshuai.xi && ... && E 28*53ee8cc1Swenshuai.xi) 29*53ee8cc1Swenshuai.xi 30*53ee8cc1Swenshuai.xi@script:python depends on org@ 31*53ee8cc1Swenshuai.xip << r.p; 32*53ee8cc1Swenshuai.xi@@ 33*53ee8cc1Swenshuai.xi 34*53ee8cc1Swenshuai.xicocci.print_main("duplicated argument to && or ||",p) 35*53ee8cc1Swenshuai.xi 36*53ee8cc1Swenshuai.xi@script:python depends on report@ 37*53ee8cc1Swenshuai.xip << r.p; 38*53ee8cc1Swenshuai.xi@@ 39*53ee8cc1Swenshuai.xi 40*53ee8cc1Swenshuai.xicoccilib.report.print_report(p[0],"duplicated argument to && or ||") 41