aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorHimangi Saraogi <himangi774@gmail.com>2014-07-20 17:36:35 -0400
committerMichal Marek <mmarek@suse.cz>2014-08-06 06:10:17 -0400
commit5be1df668a40cc0a49bc26023fffc537fae1778e (patch)
tree47fb5f4be743c9165951c2c83d54382c5629c2a8 /scripts
parente52320c3b20cbe209e98f2443866209120595636 (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.cocci62
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
13virtual patch
14virtual context
15virtual org
16virtual report
17
18//----------------------------------------------------------
19// For context mode
20//----------------------------------------------------------
21
22@depends on context@
23expression e;
24@@
25
26*if (e) BUG();
27
28//----------------------------------------------------------
29// For patch mode
30//----------------------------------------------------------
31
32@depends on patch@
33expression e;
34@@
35
36-if (e) BUG();
37+BUG_ON(e);
38
39//----------------------------------------------------------
40// For org and report mode
41//----------------------------------------------------------
42
43@r@
44expression e;
45position p;
46@@
47
48 if (e) BUG@p ();
49
50@script:python depends on org@
51p << r.p;
52@@
53
54coccilib.org.print_todo(p[0], "WARNING use BUG_ON")
55
56@script:python depends on report@
57p << r.p;
58@@
59
60msg="WARNING: Use BUG_ON"
61coccilib.report.print_report(p[0], msg)
62