6.2.5.42. Architecture-LiftedCyclesView¶
Create a view containing callgraph cycles at module/class level
Required inputs: RFG
This rule identifies cycles in the call graph and adds a corresponding cycles view to the RFG showing these cycles lifted at module or class level according to the given hierarchy view.
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.
This rule does not generate cycle issues (use CycleDetection rules to do so).
Possible Messages
This rule has no predefined messages.
Options¶
The following places define options that affect this rule: Analysis-GlobalOptions
base_view_name¶
base_view_name : str = 'Call'
hierarchy_node_predicate¶
hierarchy_node_predicate : typing.Callable[[_dg.Node], bool] | None = None
hierarchy_view_name¶
hierarchy_view_name : str = 'Module'
pre_excludes¶
pre_excludes : set[bauhaus.analysis.config.GlobPattern] = set()
result_view_name¶
result_view_name : str = 'Call Cycles in Level View'
selfloops¶
selfloops : bool = False