Analyzer::Rust::Tide
Inherits Analyzer::Rust::RustEngine < FileScanEngine < Analyzer < FileHelper < Reference < Object
Tide analyzer (tree-sitter port). Tide registers routes in two shapes, both handled here:
-
Direct chain: app.at("/users/:id").get(get_user);
-
Variable + method: let health_route = app.at("/health"); health_route.get(health_check);
We collect both let <var> = <expr>.at("/path") bindings and
direct .at("/path").<verb>(handler) chains in a single AST pass.
Constants
Walk let <var> = … bindings and record var → path for
bindings whose RHS is a .at("path") call somewhere. We use
the outermost .at we find on the RHS, mirroring the legacy
(\w+)\s*=\s*\w+\.at(...) regex.
Every route variable stores its fully composed path, so a long
let aN = aN-1.at("/s") chain would hold O(n²) bytes. Past this
length a variable keeps just its own .at literal instead.
serve_dir / serve_file are static-mount terminals that respond
to GET, registered the same app.at("/p").serve_dir("dir") way.
Class methods
Instance methods
Instance-side view of the same declaration. The per-file rescues live on
this base class, which has no way to name the analyzer that is running
inside them, so a skipped file could not be attributed to a tech.
Deriving it from analyzer_for keeps the name written exactly once.