6.2.7.1. CycleDetection-CallgraphCycles¶
Find cycles in the callgraph and report them as violations
Required inputs: RFG
This rule identifies cycles in the callgraph.
A cycle in the call graph bears the risk of infinite recursion at runtime if the termination of the calls is not guaranteed. As a consequence, the entire cycle has to be understood and all conditions must be managed simultaneously as to not induce runtime failure. At the same time, cycles impede understandability of the code for a developer.
If you want to include dynamic calls for function pointers and virtual calls, then manually activate StaticSemanticAnalysis.
If you need more advanced cycle detection features, use the rules inside the
Graph-based Analyses/Cycles section in the
Architecture group.
Possible Messages
This rule has no predefined messages.
Options¶
This rule shares the following common options: exclude_in_macros, exclude_messages_in_system_headers, excludes, includes, justification_checker, post_processing
The following places define options that affect this rule: CycleDetection, Analysis-GlobalOptions
base_view_name¶
base_view_name : str = 'Call'
consider_dynamic_calls¶
consider_dynamic_calls : bool = True
generate_violation_previews¶
generate_violation_previews : bool = True
pre_excludes¶
pre_excludes : set[bauhaus.analysis.config.GlobPattern] = set()
preview_edge_limit¶
preview_edge_limit : int = 1000
preview_node_limit¶
preview_node_limit : int = 1000
selfloops¶
selfloops : bool = False