// // Log all aprint_*() functions that could potentially be replaced // by aprint_*_dev(). // @ initialize:python @ """ Prepare format string regexp for later pattern matching Declare the TODO function for logging """ import re regex = re.compile("^\"%s: ") def warn_aprint_fmt(string, p): file = p[0].file line = p[0].line if regex.match(string.expr): print "%s:%s (aprint => aprint_*_dev. TODO -- fix format string)" % (file, line) else: print "%s:%s (XXX -- suspicious format string)" % (file, line) @ aprint1 @ type T; position p; identifier name, virtual.aprint, virtual.aprint_dev; expression device; expression string; @@ - T name; ... - name = device_xname(device); ... - aprint@p( + aprint_dev(device, string, - name, ... ) @ aprint2 @ type T; position p; identifier name, virtual.aprint, virtual.aprint_dev; expression device; expression string; @@ - T name = device_xname(device); ... - aprint@p( + aprint_dev(device, string, - name, ... ) @ aprint3 @ position p; identifier virtual.aprint, virtual.aprint_dev; expression device; expression string; @@ - aprint@p( + aprint_dev(device, string, - device_xname(device), ... ) @ script:python @ string << aprint1.string; p << aprint1.p; @@ warn_aprint_fmt(string, p) @ script:python @ string << aprint2.string; p << aprint2.p; @@ warn_aprint_fmt(string, p) @ script:python @ string << aprint3.string; p << aprint3.p; @@ warn_aprint_fmt(string, p)