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 argument performs a side 4 //# another expresssion in the same && or || o !! 3 //# effect. 5 //# side effect. << 6 /// 4 /// 7 // Confidence: Moderate 5 // Confidence: Moderate 8 // Copyright: (C) 2010 Nicolas Palix, DIKU. !! 6 // Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2. 9 // Copyright: (C) 2010 Julia Lawall, DIKU. !! 7 // Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. 10 // Copyright: (C) 2010 Gilles Muller, INRIA/Li !! 8 // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. 11 // URL: https://coccinelle.gitlabpages.inria.f !! 9 // URL: http://coccinelle.lip6.fr/ 12 // Comments: 10 // Comments: 13 // Options: --no-includes --include-headers !! 11 // Options: -no_includes -include_headers 14 12 15 virtual context 13 virtual context 16 virtual org 14 virtual org 17 virtual report 15 virtual report 18 16 19 @r expression@ 17 @r expression@ 20 expression E; 18 expression E; 21 position p; 19 position p; 22 @@ 20 @@ 23 21 24 ( 22 ( 25 E@p || ... || E !! 23 * E@p >> 24 || ... || E 26 | 25 | 27 E@p && ... && E !! 26 * E@p >> 27 && ... && E 28 ) 28 ) 29 29 30 @bad@ !! 30 @script:python depends on org@ 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\| << 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; 31 p << r.p; 51 @@ 32 @@ 52 33 53 cocci.print_main("duplicated argument to && or 34 cocci.print_main("duplicated argument to && or ||",p) 54 35 55 @script:python depends on report && !bad@ !! 36 @script:python depends on report@ 56 p << r.p; 37 p << r.p; 57 @@ 38 @@ 58 39 59 coccilib.report.print_report(p[0],"duplicated 40 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.