hyperast

Temporal code analyses at scale

https://github.com/hyperast/hyperast

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.7%) to scientific vocabulary

Keywords

ast code-analysis cst tree-sitter
Last synced: 6 months ago · JSON representation ·

Repository

Temporal code analyses at scale

Basic Info
  • Host: GitHub
  • Owner: HyperAST
  • License: gpl-3.0
  • Language: Rust
  • Default Branch: main
  • Homepage: https://hyperast.github.io
  • Size: 62.7 MB
Statistics
  • Stars: 32
  • Watchers: 2
  • Forks: 19
  • Open Issues: 5
  • Releases: 5
Topics
ast code-analysis cst tree-sitter
Created over 4 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

HyperAST

CICD badge DOI

Home Page HyperAST

Book

Getting Started

Compute code Metrics(GUI)
Track Code(GUI)

GUI


Doc

Summary

HyperAST is an AST structured as a Direct Acyclic Graph (DAG) (similar to MerkleDAG used in Git). An HyperAST is efficiently constructed by leveraging Git and TreeSitter.

It reimplements the Gumtree algorithm in Rust while using HyperAST as the underlying AST structure.

It implements a use-def solver, that uses a context-free indexing of references present in subtrees (each subtree has a bloom filter of contained references).

How to use

You can use the dedicated GUI in your browser. However, in order to use any of the GUI features, you will need to launch/connect to the REST API server.

Launch server with Nix (A package manager for reproducible, declarative and reliable systems)

Look there for instruction on how to install Nix on your system. sh nix run .#hyperast-webapi // similar to the prev. mentioned cargo run nix run github:HyperAST/HyperAST#hyperast-webapi // here nix handles everything, no need to clone! This will download all dependencies and build locally. It can work on any *NIX system (Linux, WSL, MACOSX, ...), but the CPU architecture can be a problem e.g. I could not make it work on an M1.

There is also a development shell provided with all the necessary dependencies installed in a healthy environment to develop and build the project. You can enter the environment with: sh nix develop # from the project root dir

Launch our server with Cargo (You have to handle system dependencies yourself, such as, rustc, openssl )

sh cargo run -p backend --release # from the project root dir, after having cloned the repository Note: Currently HyperAST uses features from the nightly channel, so you should definitely use rustup, the Rust version manager.

How to Cite

If you use HyperAST and/or HyperDiff in an academic purpose, please cite the following papers:

bibtex @inproceedings{ledilavrec:hal-03764541, TITLE = {{HyperAST: Enabling Efficient Analysis of Software Histories at Scale}}, AUTHOR = {Le Dilavrec, Quentin and Khelladi, Djamel Eddine and Blouin, Arnaud and J{\'e}z{\'e}quel, Jean-Marc}, URL = {https://hal.inria.fr/hal-03764541}, BOOKTITLE = {{ASE 2022 - 37th IEEE/ACM International Conference on Automated Software Engineering}}, PUBLISHER = {{IEEE}}, PAGES = {1-12}, YEAR = {2022} }

bibtex @inproceedings{ledilavrec:hal-04189855, TITLE = {{HyperDiff: Computing Source Code Diffs at Scale}}, AUTHOR = {Le Dilavrec, Quentin and Khelladi, Djamel Eddine and Blouin, Arnaud and J{\'e}z{\'e}quel, Jean-Marc}, URL = {https://inria.hal.science/hal-04189855}, BOOKTITLE = {{ESEC/FSE 2023 - 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering}}, PUBLISHER = {{ACM}}, PAGES = {1-12}, YEAR = {2023} }

Owner

  • Name: HyperAST
  • Login: HyperAST
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it using the metadata from this file."
title: "HyperAST"
authors:
    - family-names: Le Dilavrec
      given-names: Quentin
preferred-citation:
  title: "HyperAST: Enabling Efficient Analysis of Software Histories at Scale"
  url: "https://hal.inria.fr/hal-03764541v1/document"
  year: "2022"
  type: conference-paper
  collection-title: "ASE 2022 - 37th IEEE/ACM International Conference on Automated Software Engineering"
  authors:
    - family-names: Le Dilavrec
      given-names: Quentin
    - family-names: Khelladi
      given-names: Djamel Eddine
    - family-names: Blouin
      given-names: Arnaud
    - family-names: Jézéquel
      given-names: Jean-Marc

GitHub Events

Total
  • Create event: 20
  • Issues event: 3
  • Release event: 8
  • Watch event: 12
  • Delete event: 11
  • Member event: 2
  • Issue comment event: 5
  • Push event: 43
  • Pull request review event: 7
  • Pull request event: 81
  • Fork event: 3
Last Year
  • Create event: 20
  • Issues event: 3
  • Release event: 8
  • Watch event: 12
  • Delete event: 11
  • Member event: 2
  • Issue comment event: 5
  • Push event: 43
  • Pull request review event: 7
  • Pull request event: 81
  • Fork event: 3

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 3
  • Total pull requests: 37
  • Average time to close issues: over 1 year
  • Average time to close pull requests: 3 days
  • Total issue authors: 3
  • Total pull request authors: 3
  • Average comments per issue: 0.67
  • Average comments per pull request: 0.0
  • Merged pull requests: 29
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 37
  • Average time to close issues: N/A
  • Average time to close pull requests: 3 days
  • Issue authors: 1
  • Pull request authors: 3
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 29
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • quentinLeDilavrec (2)
  • pauladam94 (1)
  • Tol0kk (1)
  • monperrus (1)
  • garandria (1)
  • Comfident (1)
Pull Request Authors
  • quentinLeDilavrec (44)
  • Tol0kk (4)
  • Ort1e (2)
  • fitz35 (1)
  • garandria (1)
Top Labels
Issue Labels
enhancement (1) documentation (1)
Pull Request Labels
dependencies (6) automated (6)

Dependencies

gen/tree-sitter/java/Cargo.toml cargo
  • pretty_assertions 1.0.0 development
  • atomic-counter 1.0.1
  • bitvec 0.22.3
  • cfg-if 1.0
  • controlled-option 0.4.1
  • enumset 1.0.8
  • env_logger 0.9.0
  • fasthash 0.4.0
  • hashbrown 0.11.2
  • legion 0.4.0
  • libc 0.2
  • log 0.4.6
  • num 0.4.0
  • stack-graphs =0.3.0
  • string-interner 0.14.0
  • tree-sitter 0.20.0
  • tuples =1.4.1
  • zerocopy 0.6.1
gen/tree-sitter/xml/Cargo.toml cargo
  • pretty_assertions 1.0.0 development
  • legion 0.4.0
  • libc 0.2
  • tree-sitter 0.20.0
  • tuples =1.4.1
tree-sitter_types/Cargo.toml cargo
  • pretty_assertions 1.0.0 development
  • heck 0.3.3
  • quote 1.0.10
  • serde 1.0.130
  • serde_json 1.0.72
cvs/git/Cargo.toml cargo
  • env_logger 0.9.0 development
  • git2 0.16.1
  • log 0.4.6
  • pommes 0.0.2
  • serde 1.0.130
  • serde-xml-rs 0.5.1
  • tree-sitter 0.20.0
  • tuples =1.4.1
hyper_ast/Cargo.toml cargo
  • env_logger 0.9.0 development
  • bitvec 1.0.1
  • cfg-if 1.0
  • controlled-option 0.4.1
  • hashbrown 0.11.2
  • legion 0.4.0
  • libc 0.2
  • log 0.4.6
  • num 0.4.0
  • stack-graphs =0.3.0
  • string-interner 0.14.0
  • strum 0.23.0
  • strum_macros 0.23.1
hyper_diff/Cargo.toml cargo
  • criterion 0.4 development
  • bitvec 1.0.1
  • enum-map 2.4.1
  • env_logger 0.9.0
  • hungarian 1.1.1
  • log 0.4.6
  • logging_timer 1.1.0
  • num-traits 0.2.14
  • specs 0.17.0
  • str-distance 0.1.0
  • strum 0.23.0
  • strum_macros 0.23.1
.github/workflows/deploy.yml actions
Cargo.toml cargo
benchmark/Cargo.toml cargo
benchmark_diffs/Cargo.toml cargo
client/Cargo.toml cargo
  • reqwest 0.11 development
  • automerge 0.4.0
  • autosurgeon 0.7.1
  • average 0.13.1
  • axum 0.6.7
  • axum-extra 0.7.4
  • axum-macros 0.3.4
  • base64 0.13
  • clap 3.0
  • dashmap 5.4.0
  • enumset 1.0.12
  • env_logger 0.9.0
  • futures 0.3
  • futures-util 0.3
  • hashbrown 0.12.3
  • headers 0.3
  • http 0.2.6
  • hyper 0.14.17
  • log 0.4.6
  • nohash-hasher 0.2.0
  • num 0.4.0
  • once_cell 1.10.0
  • rhai 1.12.0
  • self_cell 0.10.2
  • serde 1.0.136
  • serde-aux 4.1.2
  • serde_json 1.0.79
  • syn 2
  • tokio 1.17.0
  • tower 0.4.12
  • tower-http 0.3.0
  • tower-layer 0.3.2
  • tracing 0.1.32
  • tracing-subscriber 0.3.9
  • tree-sitter 0.20.9
  • tree-sitter-cli 0.20.7
egui_addon/Cargo.toml cargo
gen/tree-sitter/cpp/Cargo.toml cargo
  • env_logger 0.9.0 development
  • pretty_assertions 1.0.0 development
  • atomic-counter 1.0.1
  • bitvec 1.0.1
  • cfg-if 1.0
  • controlled-option 0.4.1
  • enumset 1.0.8
  • hashbrown 0.13.2
  • legion 0.4.0
  • libc 0.2
  • log 0.4.6
  • num 0.4.0
  • serde 1.0.130
  • string-interner 0.14.0
  • tree-sitter 0.20.9
  • tuples =1.4.1
  • zerocopy 0.6.1
gen/tree-sitter/ts/Cargo.toml cargo
  • env_logger 0.9.0 development
  • pretty_assertions 1.0.0 development
  • atomic-counter 1.0.1
  • bitvec 1.0.1
  • cfg-if 1.0
  • controlled-option 0.4.1
  • enumset 1.0.8
  • hashbrown 0.13.2
  • legion 0.4.0
  • libc 0.2
  • log 0.4.6
  • num 0.4.0
  • serde 1.0.130
  • string-interner 0.14.0
  • tree-sitter 0.20.9
  • tuples =1.4.1
  • zerocopy 0.6.1
hyper_app/Cargo.toml cargo
hyper_view_try/Cargo.toml cargo
  • reqwest 0.11 development
  • ahash 0.8
  • bytemuck 1.11
  • chrono 0.4
  • eframe 0.20.1
  • egui 0.21.0
  • egui_extras 0.21.0
  • image 0.24.5
  • serde 1
  • slotmap 1.0.6
  • smallvec 1.10
  • uuid 1.1
hyperast_wasm/Cargo.toml cargo
ref-mining-evaluation/Cargo.toml cargo
Cargo.lock cargo
  • 605 dependencies
gen/tree-sitter/query/Cargo.toml cargo
  • env_logger 0.9.0 development
  • hyper_ast_gen_ts_cpp 0.1.0 development
  • pretty_assertions 1.0.0 development
  • atomic-counter 1.0.1
  • bitvec 1.0.1
  • cfg-if 1.0
  • controlled-option 0.4.1
  • enumset 1.0.8
  • hashbrown 0.13.2
  • legion 0.4.0
  • libc 0.2
  • log 0.4.6
  • num 0.4.0
  • serde 1.0.130
  • string-interner 0.14.0
  • tree-sitter 0.20.9
  • tree-sitter-query 0.1.0
  • tuples =1.4.1