Skip to content

Commit

Permalink
bpo-36876: [c-analyzer tool] Additional CLI updates for "capi" comman…
Browse files Browse the repository at this point in the history
  • Loading branch information
ericsnowcurrently committed Dec 25, 2020
1 parent c1ae21c commit 5ae9be6
Show file tree
Hide file tree
Showing 3 changed files with 380 additions and 93 deletions.
36 changes: 31 additions & 5 deletions Tools/c-analyzer/cpython/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,15 +241,15 @@ def process_kinds(args, *, argv=None):
for raw in args.kinds or ():
for kind in raw.replace(',', ' ').strip().split():
if kind in _capi.KINDS:
kind.append(kind)
kinds.append(kind)
else:
parser.error(f'expected KIND to be one of {sorted(_capi.KINDS)}, got {kind!r}')
args.kinds = set(kinds)

parser.add_argument('--group-by', dest='groupby',
choices=['level', 'kind'])

parser.add_argument('--format', default='brief')
parser.add_argument('--format', default='table')
parser.add_argument('--summary', dest='format',
action='store_const', const='summary')
def process_format(args, *, argv=None):
Expand All @@ -259,12 +259,27 @@ def process_format(args, *, argv=None):
if args.format not in _capi._FORMATS:
parser.error(f'unsupported format {orig!r}')

parser.add_argument('--show-empty', dest='showempty', action='store_true')
parser.add_argument('--no-show-empty', dest='showempty', action='store_false')
parser.set_defaults(showempty=None)

# XXX Add --sort-by, --sort and --no-sort.

parser.add_argument('--ignore', dest='ignored', action='append')
def process_ignored(args, *, argv=None):
ignored = []
for raw in args.ignored or ():
ignored.extend(raw.replace(',', ' ').strip().split())
args.ignored = ignored or None

parser.add_argument('filenames', nargs='*', metavar='FILENAME')
process_progress = add_progress_cli(parser)

return [
process_levels,
process_kinds,
process_format,
process_ignored,
process_progress,
]

Expand All @@ -273,7 +288,9 @@ def cmd_capi(filenames=None, *,
levels=None,
kinds=None,
groupby='kind',
format='brief',
format='table',
showempty=None,
ignored=None,
track_progress=None,
verbosity=VERBOSITY,
**kwargs
Expand All @@ -282,15 +299,24 @@ def cmd_capi(filenames=None, *,

filenames = _files.iter_header_files(filenames, levels=levels)
#filenames = (file for file, _ in main_for_filenames(filenames))
if track_progress is not None:
if track_progress:
filenames = track_progress(filenames)
items = _capi.iter_capi(filenames)
if levels:
items = (item for item in items if item.level in levels)
if kinds:
items = (item for item in items if item.kind in kinds)

lines = render(items, groupby=groupby, verbose=verbosity > VERBOSITY)
filter = _capi.resolve_filter(ignored)
if filter:
items = (item for item in items if filter(item, log=lambda msg: logger.log(1, msg)))

lines = render(
items,
groupby=groupby,
showempty=showempty,
verbose=verbosity > VERBOSITY,
)
print()
for line in lines:
print(line)
Expand Down
Loading

0 comments on commit 5ae9be6

Please sign in to comment.