3 个版本 (重大更改)
0.2.0 | 2024年7月10日 |
---|---|
0.1.0 | 2024年3月8日 |
0.0.1 | 2023年5月10日 |
#1 in #stack-graphs
每月116 次下载
280KB
2K SLoC
JavaScript 的 tree-sitter-stack-graphs 定义
此项目使用 tree-sitter-javascript 语法定义了 JavaScript 的 tree-sitter-stack-graphs 规则。
使用 API
要使用此库,请将以下内容添加到您的 Cargo.toml
[dependencies]
tree-sitter-stack-graphs-javascript = "0.2"
请参阅我们的 文档 了解更多关于如何使用此库的详细信息。
使用命令行程序
tree-sitter-stack-graphs-javascript
的命令行程序允许您从命令行进行基于栈图的分析和查找。
CLI 可以按以下方式运行
-
(已安装) 使用 Cargo 按以下方式安装 CLI
cargo install --features cli tree-sitter-stack-graphs-javascript
之后,CLI 应该作为
tree-sitter-stack-graphs-javascript
可用。 -
(从源代码) 除了安装 CLI 之外,还可以直接从 crate 目录运行它,作为
tree-sitter-stack-graphs-javascript
调用的替代方案,如下所示cargo run --features cli --
命令行程序的基本 CLI 工作流程是索引源代码并对生成的数据库进行查询
-
按以下方式索引源文件夹
tree-sitter-stack-graphs-javascript index SOURCE_DIR
索引将跳过任何已索引的文件。要强制重新索引,请添加
-f
标志。要检查源文件夹的状态,请运行
tree-sitter-stack-graphs-javascript status SOURCE_DIR
要清理数据库并从头开始,请运行
tree-sitter-stack-graphs-javascript clean
传递
--delete
标志不仅清空数据库,还删除它。这对于解决版本更新后可能发生的不支持的数据版本
错误很有用。 -
运行查询以查找给定行和列上的参考定义,请运行
tree-sitter-stack-graphs-javascript query definition SOURCE_PATH:LINE:COLUMN
打印结果定义,包括如果源文件可用,还包括源代码行。
通过将 -h
标志传递给 CLI 或任何子命令来发现所有可用命令和标志。
开发
该项目使用 Rust 编写,并需要安装最新版本。可以使用 rustup 安装和更新 Rust。
该项目组织如下
- 堆栈图规则定义在
src/stack-graphs.tsg
。 - 内置函数的源代码和配置分别定义在
src/builtins.it
和builtins.cfg
。 - 测试文件放在
test
目录下。
运行测试
按照以下方式运行测试
cargo test
项目由一个库和一个命令行界面(CLI)组成。默认情况下,运行 cargo
只适用于库。要同时运行 CLI 的 cargo
命令,请添加 --features cli
或 --all-features
。
按照以下方式从源代码运行 CLI
cargo run --features cli -- ARGS
源代码使用标准的 Rust 格式进行格式化,可以通过运行以下命令来实现
cargo fmt
编写 TSG
堆栈图规则以 tree-sitter-graph 的形式编写。查看示例,其中包含特定语言特性的自包含 TSG 规则。有一个 VSCode 扩展 可用于为 TSG 文件提供语法高亮。
通过执行以下命令来解析和测试单个文件
cargo run --features cli -- parse FILES...
cargo run --features cli -- test TESTFILES...
通过传递 -V
标志来生成可视化,以调试失败的测试
cargo run --features cli -- test -V TESTFILES...
要无论测试结果如何都生成可视化,请执行
cargo run --features cli -- test -V --output-mode=always TESTFILES...
访问 https://crates.io/crates/tree-sitter-stack-graphs 以获取示例和文档链接。
依赖项
~12–26MB
~419K SLoC