[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()
13.03.2020 10:50, Markus Armbruster wrote: 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. I decided that searching for Error * definition is simple, and better for user to search all definitions by hand (may be more than too). But understanding control flows is more complex thing and better to help user with line positions. But if you want, we can add them of course. Note, that for some reasons some times coccinelle instead of original filename prints something like /tmp/...original-name... so it don't look nice and may be a bit misleading. + +// 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))[...] -- Best regards, Vladimir _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |