MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / main

Function main

tools/reduce.py:278–349  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

276
277
278def main():
279 # TODO: add --hang option to detect code which impacts the analysis time
280 def show_syntax():
281 print('Syntax:')
282 print(' reduce.py --exe <cppcheck executable> --exe_args <full command> --expected <expected text output> --file <source file> [--segfault]')
283 print('')
284 print("Example. source file = foo/bar.c")
285 print(
286 ' reduce.py --exe ./cppcheck --exe_args " --enable=style" --expected "Variable \'x\' is reassigned" --file foo/bar.c')
287 sys.exit(1)
288
289 if len(sys.argv) == 1:
290 show_syntax()
291 parser = argparse.ArgumentParser()
292 parser.add_argument('-exe', '--exe', required=True, help="cppcheck executable")
293 parser.add_argument('-exe_args', '--exe_args', required=False, default="", help="cppcheck executable commands")
294 parser.add_argument('-expected', '--expected', required=True, help="expected text output")
295 parser.add_argument('-file', '--file', required=True, help="source file")
296 parser.add_argument('-segfault', '--segfault', required=False, action='store_true')
297 args = parser.parse_args()
298
299 arg_file = args.file
300 arg_cmd = [args.exe] + args.exe_args.split() + [arg_file]
301 arg_expected = args.expected
302 arg_segfault = args.segfault
303 try:
304 reduce = Reduce(arg_cmd, arg_expected, arg_file, arg_segfault)
305 except RuntimeError as e:
306 print(e)
307 show_syntax()
308
309 reduce.print_info()
310
311 # reduce..
312 print('Make sure error can be reproduced...')
313 t = time.time()
314 if not reduce.runtool():
315 print("Cannot reproduce")
316 sys.exit(1)
317 elapsed_time = time.time() - t
318 reduce.set_elapsed_time(elapsed_time)
319 print('elapsed_time: {}'.format(elapsed_time))
320
321 with open(arg_file, 'rt') as f:
322 filedata = f.readlines()
323
324 reduce.writeorigfile(filedata)
325
326 while True:
327 filedata1 = list(filedata)
328
329 print('remove preprocessor directives...')
330 reduce.removedirectives(filedata)
331
332 print('remove blocks...')
333 filedata = reduce.removeblocks(filedata)
334
335 print('remove comments...')

Callers 1

reduce.pyFile · 0.70

Calls 13

print_infoMethod · 0.95
runtoolMethod · 0.95
set_elapsed_timeMethod · 0.95
writeorigfileMethod · 0.95
removedirectivesMethod · 0.95
removeblocksMethod · 0.95
removecommentsMethod · 0.95
combinelinesMethod · 0.95
removelineMethod · 0.95
writefileMethod · 0.95
show_syntaxFunction · 0.85
ReduceClass · 0.85

Tested by

no test coverage detected