diff options
author | Himangi Saraogi <himangi774@gmail.com> | 2014-07-20 17:36:35 -0400 |
---|---|---|
committer | Michal Marek <mmarek@suse.cz> | 2014-08-06 06:10:17 -0400 |
commit | 5be1df668a40cc0a49bc26023fffc537fae1778e (patch) | |
tree | 47fb5f4be743c9165951c2c83d54382c5629c2a8 /scripts | |
parent | e52320c3b20cbe209e98f2443866209120595636 (diff) |
Coccinelle: Script to replace if and BUG with BUG_ON
This script detects cases where BUG() follows an if condition on an
expression and replaces the if condition and BUG() with a BUG_ON having
the conditional expression of the if statement as argument.
Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Michal Marek <mmarek@suse.cz>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/coccinelle/misc/bugon.cocci | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/scripts/coccinelle/misc/bugon.cocci b/scripts/coccinelle/misc/bugon.cocci new file mode 100644 index 000000000000..556456ca761c --- /dev/null +++ b/scripts/coccinelle/misc/bugon.cocci | |||
@@ -0,0 +1,62 @@ | |||
1 | /// Use BUG_ON instead of a if condition followed by BUG. | ||
2 | /// | ||
3 | //# This makes an effort to find cases where BUG() follows an if | ||
4 | //# condition on an expression and replaces the if condition and BUG() | ||
5 | //# with a BUG_ON having the conditional expression of the if statement | ||
6 | //# as argument. | ||
7 | // | ||
8 | // Confidence: High | ||
9 | // Copyright: (C) 2014 Himangi Saraogi. GPLv2. | ||
10 | // Comments: | ||
11 | // Options: --no-includes, --include-headers | ||
12 | |||
13 | virtual patch | ||
14 | virtual context | ||
15 | virtual org | ||
16 | virtual report | ||
17 | |||
18 | //---------------------------------------------------------- | ||
19 | // For context mode | ||
20 | //---------------------------------------------------------- | ||
21 | |||
22 | @depends on context@ | ||
23 | expression e; | ||
24 | @@ | ||
25 | |||
26 | *if (e) BUG(); | ||
27 | |||
28 | //---------------------------------------------------------- | ||
29 | // For patch mode | ||
30 | //---------------------------------------------------------- | ||
31 | |||
32 | @depends on patch@ | ||
33 | expression e; | ||
34 | @@ | ||
35 | |||
36 | -if (e) BUG(); | ||
37 | +BUG_ON(e); | ||
38 | |||
39 | //---------------------------------------------------------- | ||
40 | // For org and report mode | ||
41 | //---------------------------------------------------------- | ||
42 | |||
43 | @r@ | ||
44 | expression e; | ||
45 | position p; | ||
46 | @@ | ||
47 | |||
48 | if (e) BUG@p (); | ||
49 | |||
50 | @script:python depends on org@ | ||
51 | p << r.p; | ||
52 | @@ | ||
53 | |||
54 | coccilib.org.print_todo(p[0], "WARNING use BUG_ON") | ||
55 | |||
56 | @script:python depends on report@ | ||
57 | p << r.p; | ||
58 | @@ | ||
59 | |||
60 | msg="WARNING: Use BUG_ON" | ||
61 | coccilib.report.print_report(p[0], msg) | ||
62 | |||