in cbmc_viewer/tracet.py [0:0]
def parse_json_step(step, root=None):
"""Parse a step of a json trace."""
if step['hidden']: # Skip most hidden steps, but...
# ...don't skip a function call or return
function_call_step = step['stepType'] in ['function-call', 'function-return']
# ...don't skip static initialization (do skip internal assignments)
visible_assignment_step = (
step['stepType'] == 'assignment' and
not step['lhs'].startswith('__CPROVER') and
not step['lhs'].startswith('return_value_')
)
if not function_call_step and not visible_assignment_step:
logging.debug('Skipping step type: %s', step['stepType'])
return None
kind = step['stepType']
parser = (parse_json_failure if kind == 'failure' else
parse_json_assignment if kind == 'assignment' else
parse_json_function_call if kind == 'function-call' else
parse_json_function_return if kind == 'function-return' else
parse_json_location_only if kind == 'location-only' else None)
if parser is None:
# skip uninteresting kinds of steps
if kind == 'loop-head':
logging.debug('Skipping step type: %s', kind)
return None
# warn about skipping a potentially interesting kind of step
logging.warning('Skipping step type: %s', kind)
return None
parsed_step = parser(step, root)
if parsed_step:
parsed_step['hidden'] = bool(step['hidden'])
return parsed_step