[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 02/10] scripts: Coccinelle script to use ERRP_AUTO_PROPAGATE()
Vladimir Sementsov-Ogievskiy <vsementsov@xxxxxxxxxxxxx> writes: [...] > +// Warn several Error * definitions. > +@check1 disable optional_qualifier exists@ > +identifier fn = rule1.fn, local_err, local_err2; > +@@ > + > + fn(..., Error ** ____, ...) > + { > + ... > + Error *local_err = NULL; > + ... when any > + Error *local_err2 = NULL; > + ... when any > + } > + > +@ script:python @ > +fn << check1.fn; > +@@ > + > +print('Warning: function {} has several definitions of ' > + 'Error * local variable'.format(fn)) Printing the positions like you do in the next rule is useful when examining these warnings. > + > +// Warn several propagations in control flow. > +@check2 disable optional_qualifier exists@ > +identifier fn = rule1.fn; > +symbol errp; > +position p1, p2; > +@@ > + > + fn(..., Error ** ____, ...) > + { > + ... > +( > + error_propagate_prepend(errp, ...);@p1 > +| > + error_propagate(errp, ...);@p1 > +) > + ... > +( > + error_propagate_prepend(errp, ...);@p2 > +| > + error_propagate(errp, ...);@p2 > +) > + ... when any > + } > + > +@ script:python @ > +fn << check2.fn; > +p1 << check2.p1; > +p2 << check2.p2; > +@@ > + > +print('Warning: function {} propagates to errp several times in ' > + 'one control flow: at {}:{} and then at {}:{}'.format( > + fn, p1[0].file, p1[0].line, p2[0].file, p2[0].line)) [...] _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |