| 3442 | def misra_17_2(self, data): |
| 3443 | # find recursions.. |
| 3444 | def find_recursive_call(search_for_function, direct_call, calls_map, visited=None): |
| 3445 | if visited is None: |
| 3446 | visited = set() |
| 3447 | if direct_call == search_for_function: |
| 3448 | return True |
| 3449 | for indirect_call in calls_map.get(direct_call, []): |
| 3450 | if indirect_call == search_for_function: |
| 3451 | return True |
| 3452 | if indirect_call in visited: |
| 3453 | # This has already been handled |
| 3454 | continue |
| 3455 | visited.add(indirect_call) |
| 3456 | if find_recursive_call(search_for_function, indirect_call, calls_map, visited): |
| 3457 | return True |
| 3458 | return False |
| 3459 | |
| 3460 | # List functions called in each function |
| 3461 | function_calls = {} |