xref: /utopia/UTPA2-700.0.x/projects/build/scripts/coccinelle/misc/doubleinit.cocci (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi/// Find duplicate field initializations.  This has a high rate of false
2*53ee8cc1Swenshuai.xi/// positives due to #ifdefs, which Coccinelle is not aware of in a structure
3*53ee8cc1Swenshuai.xi/// initialization.
4*53ee8cc1Swenshuai.xi///
5*53ee8cc1Swenshuai.xi// Confidence: Low
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: requires at least Coccinelle 0.2.4, lex or parse error otherwise
11*53ee8cc1Swenshuai.xi// Options: -no_includes -include_headers
12*53ee8cc1Swenshuai.xi
13*53ee8cc1Swenshuai.xivirtual org
14*53ee8cc1Swenshuai.xivirtual report
15*53ee8cc1Swenshuai.xi
16*53ee8cc1Swenshuai.xi@r@
17*53ee8cc1Swenshuai.xiidentifier I, s, fld;
18*53ee8cc1Swenshuai.xiposition p0,p;
19*53ee8cc1Swenshuai.xiexpression E;
20*53ee8cc1Swenshuai.xi@@
21*53ee8cc1Swenshuai.xi
22*53ee8cc1Swenshuai.xistruct I s =@p0 { ..., .fld@p = E, ...};
23*53ee8cc1Swenshuai.xi
24*53ee8cc1Swenshuai.xi@s@
25*53ee8cc1Swenshuai.xiidentifier I, s, r.fld;
26*53ee8cc1Swenshuai.xiposition r.p0,p;
27*53ee8cc1Swenshuai.xiexpression E;
28*53ee8cc1Swenshuai.xi@@
29*53ee8cc1Swenshuai.xi
30*53ee8cc1Swenshuai.xistruct I s =@p0 { ..., .fld@p = E, ...};
31*53ee8cc1Swenshuai.xi
32*53ee8cc1Swenshuai.xi@script:python depends on org@
33*53ee8cc1Swenshuai.xip0 << r.p0;
34*53ee8cc1Swenshuai.xifld << r.fld;
35*53ee8cc1Swenshuai.xips << s.p;
36*53ee8cc1Swenshuai.xipr << r.p;
37*53ee8cc1Swenshuai.xi@@
38*53ee8cc1Swenshuai.xi
39*53ee8cc1Swenshuai.xiif int(ps[0].line) < int(pr[0].line) or (int(ps[0].line) == int(pr[0].line) and int(ps[0].column) < int(pr[0].column)):
40*53ee8cc1Swenshuai.xi  cocci.print_main(fld,p0)
41*53ee8cc1Swenshuai.xi  cocci.print_secs("s",ps)
42*53ee8cc1Swenshuai.xi  cocci.print_secs("r",pr)
43*53ee8cc1Swenshuai.xi
44*53ee8cc1Swenshuai.xi@script:python depends on report@
45*53ee8cc1Swenshuai.xip0 << r.p0;
46*53ee8cc1Swenshuai.xifld << r.fld;
47*53ee8cc1Swenshuai.xips << s.p;
48*53ee8cc1Swenshuai.xipr << r.p;
49*53ee8cc1Swenshuai.xi@@
50*53ee8cc1Swenshuai.xi
51*53ee8cc1Swenshuai.xiif int(ps[0].line) < int(pr[0].line) or (int(ps[0].line) == int(pr[0].line) and int(ps[0].column) < int(pr[0].column)):
52*53ee8cc1Swenshuai.xi  msg = "%s: first occurrence %s, second occurrence %s" % (fld,ps[0].line,pr[0].line)
53*53ee8cc1Swenshuai.xi  coccilib.report.print_report(p0[0],msg)
54