Skip to main content

Static Analysis Scope

ROS2 Inspector v0.1.0 analyzes workspace source files. It does not connect to a live ROS graph, execute nodes, or build the workspace.

What is analyzed

  1. package.xml manifests and declared dependencies;
  2. supported Python node and endpoint patterns through Python AST;
  3. supported C++ patterns through Tree-sitter;
  4. .msg, .srv, and .action interface definitions;
  5. supported Python, XML, and YAML launch-file patterns and remaps;
  6. relationships assembled into the Unified Architecture Model.

Advantages

  • works in CI and on unbuilt workspaces;
  • requires no ROS2 daemon or running nodes;
  • produces deterministic results for the same source inputs;
  • catches package, connectivity, and policy issues before deployment;
  • supports incremental analysis through content fingerprints.

Boundaries

Static analysis cannot guarantee a complete runtime graph. Common limits include:

  • names computed from parameters, environment variables, or arbitrary expressions;
  • nodes and endpoints hidden behind wrappers, macros, plugins, or complex templates;
  • runtime-only remapping and conditional launch behavior;
  • actual QoS compatibility and live endpoint availability;
  • components loaded dynamically by a running system.

When a name or type is not statically resolvable, v0.1.0 records dynamic-name flags, evidence, confidence, or diagnostics rather than presenting the result as certain.

Choosing a command

NeedCommand
Package inventory and healthscan or packages
Detected node endpointsnodes
Architecture exportgraph
Interactive offline viewviz
Zero-config structural checksaudit
Project-specific architecture rulesvalidate