8000 bpo-36876: [c-analyzer tool] Additional CLI updates for "capi" comman… · python/cpython@5ae9be6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5ae9be6

Browse files
bpo-36876: [c-analyzer tool] Additional CLI updates for "capi" command. (gh-23929)
https://bugs.python.org/issue36876
1 parent c1ae21c commit 5ae9be6

File tree

3 files changed

+380
-93
lines changed

3 files changed

+380
-93
lines changed

Tools/c-analyzer/cpython/__main__.py

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -241,15 +241,15 @@ def process_kinds(args, *, argv=None):
241241
for raw in args.kinds or ():
242242
for kind in raw.replace(',', ' ').strip().split():
243243
if kind in _capi.KINDS:
244-
kind.append(kind)
244+
kinds.append(kind)
245245
else:
246246
parser.error(f'expected KIND to be one of {sorted(_capi.KINDS)}, got {kind!r}')
247247
args.kinds = set(kinds)
248248

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

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

262+
parser.add_argument('--show-empty', dest='showempty', action='store_true')
263+
parser.add_argument('--no-show-empty', dest='showempty', action='store_false')
264+
parser.set_defaults(showempty=None)
265+
266+
# XXX Add --sort-by, --sort and --no-sort.
267+
268+
parser.add_argument('--ignore', dest='ignored', action='append')
269+
def process_ignored(args, *, argv=None):
270+
ignored = []
271+
for raw in args.ignored or ():
272+
ignored.extend(raw.replace(',', ' ').strip().split())
273+
args.ignored = ignored or None
274+
262275
parser.add_argument('filenames', nargs='*', metavar='FILENAME')
263276
process_progress = add_progress_cli(parser)
264277

265278
return [
266279
process_levels,
280+
process_kinds,
267281
process_format,
282+
process_ignored,
268283
process_progress,
269284
]
270285

@@ -273,7 +288,9 @@ def cmd_capi(filenames=None, *,
273288
levels=None,
274289
kinds=None,
275290
groupby='kind',
276-
format='brief',
291+
format='table',
292+
showempty=None,
293+
ignored=None,
277294
track_progress=None,
278295
verbosity=VERBOSITY,
279296
**kwargs
@@ -282,15 +299,24 @@ def cmd_capi(filenames=None, *,
282299

283300
filenames = _files.iter_header_files(filenames, levels=levels)
284301
#filenames = (file for file, _ in main_for_filenames(filenames))
285-
if track_progress is not None:
302+
if track_progress:
286303
filenames = track_progress(filenames)
287304
items = _capi.iter_capi(filenames)
288305
if levels:
289306
items = (item for item in items if item.level in levels)
290307
if kinds:
291308
items = (item for item in items if item.kind in kinds)
292309

293-
lines = render(items, groupby=groupby, verbose=verbosity > VERBOSITY)
310+
filter = _capi.resolve_filter(ignored)
311+
if filter:
312+
items = (item for item in items if filter(item, log=lambda msg: logger.log(1, msg)))
313+
314+
lines = render(
315+
items,
316+
groupby=groupby,
317+
showempty=showempty,
318+
verbose=verbosity > VERBOSITY,
319+
)
294320
print()
295321
for line in lines:
296322
print(line)

0 commit comments

Comments
 (0)
0