pyfcstm.diagnostics.analyzers.use_def

Use-def graph construction for guard-affect data-flow analysis.

UseDefGraph

class pyfcstm.diagnostics.analyzers.use_def.UseDefGraph(edges: Tuple[Tuple[str, str], ...], dependencies_by_target: Dict[str, Tuple[str, ...]])[source]

Directed variable dependency graph.

Each edge is (source, target) and means that target’s value may depend on source through an assignment expression or an enclosing operation-block condition.

affecting_variables(direct_variables: Iterable[str]) Tuple[str, ...][source]

Return all variables that can flow into direct_variables.

dependencies_of(target: str) Tuple[str, ...][source]

Return variables that may affect target.

build_use_def_graph

pyfcstm.diagnostics.analyzers.use_def.build_use_def_graph(machine: StateMachine) UseDefGraph[source]

Build a conservative use-def graph from concrete actions/effects.

collect_expr_variables

pyfcstm.diagnostics.analyzers.use_def.collect_expr_variables(expr: Expr) Tuple[str, ...][source]

Return variable names read by expr in stable first-seen order.