4 releases (2 breaking)
new 0.3.0 | Apr 27, 2024 |
---|---|
0.2.0 | Apr 21, 2024 |
0.1.5 | Apr 19, 2024 |
0.1.2 | Apr 19, 2024 |
#1 in #relationship
460 downloads per month
49KB
1.5K
SLoC
Gossiphs = Gossip Graphs
A Rust library for general code file relationship analysis. Based on tree-sitter and git analysis.
Goal & Motivation
This repository is largely inspired by Github's Stack-Graphs. We attempt to make some trade-offs on the challenges currently faced by stack-graphs (https://dcreager.net/talks/stack-graphs/) to achieve our expected goals to a certain extent:
- It can be applied to most languages and repositories without additional configuration.
- The cost of writing rules for languages is not high.
- We have sacrificed a certain level of precision, but we also hope that it remains at an acceptable level.
Usage
The project is still in the experimental stage.
As a rust library
Please refer to examples for usage.
fn main() {
let config = GraphConfig::default();
let g = Graph::from(config);
// done! just try it
let all_files = g.files();
for file in &all_files {
// related file search
let related_files = g.related_files(file);
for each_related in &related_files {
println!("{} -> {}: {}", file, each_related.name, each_related.score);
}
// file details
if !related_files.is_empty() {
let random_file = related_files[0].name.clone();
let meta = g.file_metadata(&random_file);
println!("symbols in {}: {:?}", random_file, meta.symbols.len());
// and query the symbol infos
}
}
}
As a command line tool
You can find pre-compiled files for your platform
on Our Release Page. After extraction, you can use gossiphs --help
to find the corresponding help.
License
Dependencies
~80MB
~2M SLoC