Commit 97c1cf8fdbce332bfacc3e38aae3fe2af1369906

Authored by Julia Lawall
Committed by Michal Marek
1 parent 10247179a7

Coccinelle: Find doubled arguments to boolean or bit operators.

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Nicolas Palix <npalix.work@gmail.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>

Showing 2 changed files with 94 additions and 0 deletions Side-by-side Diff

scripts/coccinelle/tests/doublebitand.cocci
  1 +/// Find bit operations that include the same argument more than once
  2 +//# One source of false positives is when the argument performs a side
  3 +//# effect. Another source of false positives is when a neutral value
  4 +//# such as 0 for | is used to indicate no information, to maintain the
  5 +//# same structure as other similar expressions
  6 +///
  7 +// Confidence: Moderate
  8 +// Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2.
  9 +// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2.
  10 +// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.
  11 +// URL: http://coccinelle.lip6.fr/
  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
  26 + & ... & E
  27 +|
  28 +* E@p
  29 + | ... | E
  30 +|
  31 +* E@p
  32 + & ... & !E
  33 +|
  34 +* E@p
  35 + | ... | !E
  36 +|
  37 +* !E@p
  38 + & ... & E
  39 +|
  40 +* !E@p
  41 + | ... | E
  42 +)
  43 +
  44 +@script:python depends on org@
  45 +p << r.p;
  46 +@@
  47 +
  48 +cocci.print_main("duplicated argument to & or |",p)
  49 +
  50 +@script:python depends on report@
  51 +p << r.p;
  52 +@@
  53 +
  54 +coccilib.report.print_report(p[0],"duplicated argument to & or |")
scripts/coccinelle/tests/doubletest.cocci
  1 +/// Find &&/|| operations that include the same argument more than once
  2 +//# A common source of false positives is when the argument performs a side
  3 +//# effect.
  4 +///
  5 +// Confidence: Moderate
  6 +// Copyright: (C) 2010 Nicolas Palix, DIKU. GPLv2.
  7 +// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2.
  8 +// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.
  9 +// URL: http://coccinelle.lip6.fr/
  10 +// Comments:
  11 +// Options: -no_includes -include_headers
  12 +
  13 +virtual context
  14 +virtual org
  15 +virtual report
  16 +
  17 +@r expression@
  18 +expression E;
  19 +position p;
  20 +@@
  21 +
  22 +(
  23 +* E@p
  24 + || ... || E
  25 +|
  26 +* E@p
  27 + && ... && E
  28 +)
  29 +
  30 +@script:python depends on org@
  31 +p << r.p;
  32 +@@
  33 +
  34 +cocci.print_main("duplicated argument to && or ||",p)
  35 +
  36 +@script:python depends on report@
  37 +p << r.p;
  38 +@@
  39 +
  40 +coccilib.report.print_report(p[0],"duplicated argument to && or ||")