tree-sitter-stack-graphs
The tree-sitter-stack-graphs
crate lets you create stack graphs using the tree-sitter grammar for a language.
Using the API
To use this library, add the following to your Cargo.toml
:
[]
= "0.10"
Check out our documentation for more details on how to use this library.
Using the Command-line Program
The command-line program for tree-sitter-stack-graphs
lets you do stack graph based analysis and lookup from the command line.
The CLI can be run as follows:
-
(Installed) Install the CLI using Cargo as follows:
After this, the CLI should be available as
tree-sitter-stack-graphs
. -
(From source) Instead of installing the CLI, it can also be run directly from the crate directory, as a replacement for a
tree-sitter-stack-graphs
invocation, as follows:
The basic CLI workflow for the command-line program is to index source code and issue queries against the resulting database:
-
Index a source folder as follows:
Indexing will skip any files that have already be indexed. To force a re-index, add the
-f
flag.To check the status if a source folder, run:
To clean the database and start with a clean slate, run:
Pass the
--delete
flag to not just empty the database, but also delete it. This is useful to resolveunsupported database version
errors that may occur after a version update. -
Run a query to find the definition(s) for a reference on a given line and column, run:
Resulting definitions are printed, including a source line if the source file is available.
Discover all available commands and flags by passing the -h
flag to the CLI directly, or to any of the subcommands.
Getting Started on a new Language
Starting a new project to develop stack graph definitions for your favourite language is as easy as running the init
command:
Answer the questions to provide information about the language, the grammar dependency, and the project and hit Generate
to generate the new project. Check out PROJECT_DIR/README.md
to find out how to start developing.
Check out examples of stack graph rules for typical language features.
Development
The project is written in Rust, and requires a recent version installed. Rust can be installed and updated using rustup.
Build the project by running:
Run the tests by running:
The project consists of a library and a CLI.
By default, running cargo
only applies to the library.
To run cargo
commands on the CLI as well, add --features cli
or --all-features
.
Run the CLI from source as follows:
Sources are formatted using the standard Rust formatted, which is applied by running:
License
Licensed under either of
at your option.