#language #tree-sitter #call-stack #indexing #config-parser #universal #structure

asterisk

使用tree-sitter进行通用无语言限制的AST遍历和精确调用栈生成

1个不稳定版本

0.1.0 2024年4月19日

#496 in 配置

MIT许可证

225KB
678

asterisk 🌟

Asterisk是一个用于解析和索引各种语言代码的库。 📚

LICENSE

目录

特性

  • 提取代码结构和调用信息 📊
  • 生成调用图 🌐
  • 支持多种语言 🌍
    • Rust 🦀
    • Python 🐍
  • 可配置的语言特定设置 🛠️

安装

asterisk添加到您的Cargo.toml文件中作为依赖项

[dependencies]
asterisk = "0.1.0"

使用

use asterisk::config::Config;
use asterisk::indexer::index_directory;

fn main() {
    let toml_str = fs::read_to_string("asterisk.toml").expect("Unable to read file");
    let config = Config::from_toml(&toml_str).unwrap();

    let dir_path = "path/to/directory";
    let (blocks, call_stack, call_graph) = index_directory(&config, dir_path);

    // Process the extracted information
    // ...
}

配置

Asterisk使用TOML配置文件来指定语言特定设置。以下是一个示例配置

[languages]
  [languages.python]
    [languages.python.matchers]
      import_statement = "import_from_statement"
      # ...

  [languages.rust]
    [languages.rust.matchers]
      import_statement = "use_declaration"  
      # ...

开发

从源代码构建项目

$ git clone https://github.com/stitionai/asterisk.git
$ cd asterisk/
$ cargo build --release

贡献

贡献方式

  • 建议一个功能
  • 报告一个错误
  • 修复某些内容并提交一个pull request
  • 帮助编写代码文档
  • 宣传

许可证

在MIT许可证下发布,更多信息请见LICENSE

喜欢这个项目吗?

通过收藏仓库来支持项目。⭐

依赖项

~5–7.5MB
~143K SLoC