Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
25b9b78
Implement dynamic dispatch flag + fan-out
hungpham10 Oct 25, 2026
88a313e
Enrich Go semantics: method-set matching, function values, imports, c…
hungpham10 Oct 25, 2026
aea4334
Go method-set: match signature, không chỉ tên + gom LangSpec thành nhóm
hungpham10 Oct 25, 2026
ca59b0d
Rust semantic enrichment: field/param typing, use indexing, cross-fil…
hungpham10 Oct 25, 2026
e577565
Python semantic enrichment + persist dynamic indexes qua reopen
hungpham10 Oct 25, 2026
7de341e
Rust config review fixes: trait-declared methods + macro invocations
hungpham10 Oct 25, 2026
a3a7107
Persist file_deps/fn_ptr_assigns cho MỌI storage backend
hungpham10 Oct 25, 2026
252544a
callers()/impact xuyên dyn-trait: fan-out fire theo receiver_text + d…
hungpham10 Oct 25, 2026
ab8578e
Java + JavaScript/TypeScript semantic enrichment
hungpham10 Oct 25, 2026
1e902f7
PHP/Ruby/Lua/Scala semantic enrichment — hoàn thiện fan-out toàn ngôn…
hungpham10 Oct 25, 2026
20dc997
Swift/C# semantic enrichment — đủ 14/14 ngôn ngữ
hungpham10 Oct 25, 2026
74d3053
FunctionValue + member assignment + MARKER_AWAIT (priority 1/3/6)
hungpham10 Oct 25, 2026
9bd95af
C/C++ enrichment batch 1-4: include graph, fn-ptr mở rộng, sig_key, v…
hungpham10 Oct 25, 2026
1bdbe0e
Web UI: dynamic-dispatch badges, Call sites/Pattern/Trace tabs, searc…
hungpham10 Oct 25, 2026
0d891e0
C/C++ batch #6 + #8: declaration–definition linking + namespace-quali…
hungpham10 Oct 25, 2026
0951045
C/C++ batch cuối: lambda có tên (#5), macro theo thiết kế ghi-nhận (#…
hungpham10 Oct 25, 2026
52ee89c
MCP + GraphQL tool cấu hình effect rules runtime (LLM tự định nghĩa m…
hungpham10 Oct 25, 2026
3a0ba48
Bump version to v2.2.11
hungpham10 Oct 25, 2026
7c1f618
Dọn debug eprintln sót (DBG by_name/DBG/DBG3/PHPDBG/SCALADBG) sau các…
hungpham10 Oct 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,4 @@ build/
# Bench repos được fetch về (danh sách nguồn: .github/benches/repos/sources.txt)
.github/benches/repos/checkout/
.github/benches/repos/list.txt
.zcode/
30 changes: 15 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ members = [
]

[workspace.package]
version = "2.2.10"
version = "2.2.11"
edition = "2021"
rust-version = "1.80"
license = "MIT"
Expand Down
16 changes: 16 additions & 0 deletions crates/codegraph-api/src/mermaid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,18 @@ fn node_style(
};
let mut label = label;
if let Some(c) = call {
// Dynamic dispatch: nhãn `[dyn]` + candidates để người đọc thấy đây là
// điểm mù tĩnh và biết các target khả dĩ.
if matches!(
c.resolved_via,
codegraph_core::ResolutionKind::HierarchyFanOut
| codegraph_core::ResolutionKind::UnresolvedDynamic
) {
label = format!("[dyn] {label}");
if !c.candidate_names.is_empty() {
label.push_str(&format!(" → {}", c.candidate_names.join(", ")));
}
}
if c.line > 0 {
label.push_str(&format!(" · L{}", c.line));
}
Expand Down Expand Up @@ -741,6 +753,8 @@ mod tests {
doc: None,
annotations: Vec::new(),
language: "typescript".into(),
impl_trait: None,
sig_key: None,
},
chain,
chain_desc: desc.into_iter().map(String::from).collect(),
Expand Down Expand Up @@ -779,6 +793,8 @@ mod tests {
args: Vec::new(),
into_var: None,
is_new_var: false,
resolved_via: codegraph_core::ResolutionKind::default(),
candidate_names: Vec::new(),
}
}

Expand Down
12 changes: 12 additions & 0 deletions crates/codegraph-api/tests/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ fn sym(id: u64, name: &str) -> Symbol {
doc: None,
annotations: Vec::new(),
language: "typescript".into(),
impl_trait: None,
sig_key: None,
}
}

Expand Down Expand Up @@ -60,7 +62,10 @@ async fn seed_index(path: &str) -> (u64, u64, u64) {
target_method: None,
into_var: None,
is_new_var: false,
..Default::default()
}],
fn_ptr_assigns: Vec::new(),
file_deps: None,
};
idx.ingest(&[r], None).await.unwrap();
(caller, callee, helper)
Expand Down Expand Up @@ -293,6 +298,8 @@ async fn seed_many(db: &str, count: usize) {
symbols: vec![sym(id, &name)],
chains: HashMap::new(),
calls: vec![],
fn_ptr_assigns: Vec::new(),
file_deps: None,
});
}
idx.ingest(&results, None).await.unwrap();
Expand Down Expand Up @@ -323,6 +330,8 @@ async fn seed_annotations(db: &str, count: usize) {
symbols: vec![s],
chains: HashMap::new(),
calls: vec![],
fn_ptr_assigns: Vec::new(),
file_deps: None,
});
}
idx.ingest(&results, None).await.unwrap();
Expand Down Expand Up @@ -357,7 +366,10 @@ async fn seed_references(db: &str, count: usize) {
target_method: None,
into_var: None,
is_new_var: false,
..Default::default()
}],
fn_ptr_assigns: Vec::new(),
file_deps: None,
});
}
idx.ingest(&results, None).await.unwrap();
Expand Down
4 changes: 4 additions & 0 deletions crates/codegraph-bench/benches/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ fn fixture(fan_in: usize) -> ParseResult {
doc: None,
annotations: Vec::new(),
language: "rust".into(),
impl_trait: None,
sig_key: None,
});
let chain = if i == 0 {
vec![id]
Expand All @@ -53,6 +55,8 @@ fn fixture(fan_in: usize) -> ParseResult {
symbols,
chains,
calls: Vec::new(),
fn_ptr_assigns: Vec::new(),
file_deps: None,
}
}

Expand Down
7 changes: 7 additions & 0 deletions crates/codegraph-bench/src/bin/mem.rs
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,8 @@ fn synthetic_parse_result(n: usize, fanout: usize, shape: Shape) -> codegraph_gr
doc: Some("Synthetic symbol để đo RAM — không phải code thật.".into()),
annotations: Vec::<Annotation>::new(),
language: "rust".into(),
impl_trait: None,
sig_key: None,
});
}

Expand Down Expand Up @@ -366,6 +368,9 @@ fn synthetic_parse_result(n: usize, fanout: usize, shape: Shape) -> codegraph_gr
target_method: None,
into_var: None,
is_new_var: false,
receiver_text: None,
resolved_via: codegraph_core::ResolutionKind::default(),
candidates: Vec::new(),
});
}
}
Expand All @@ -382,6 +387,8 @@ fn synthetic_parse_result(n: usize, fanout: usize, shape: Shape) -> codegraph_gr
symbols,
chains,
calls,
fn_ptr_assigns: Vec::new(),
file_deps: None,
}
}

Expand Down
2 changes: 2 additions & 0 deletions crates/codegraph-binary/src/cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ mod tests {
symbols: vec![],
chains: Default::default(),
calls: vec![],
fn_ptr_assigns: Vec::new(),
file_deps: None,
};
let entry = SourceEntry::with_stat("bin/ls", Some(1_000_000), Some(12345));
let p = cache_path(&root, std::path::Path::new("/bin/ls"), &entry);
Expand Down
16 changes: 16 additions & 0 deletions crates/codegraph-binary/src/extract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ fn do_extract(
doc: None,
annotations,
language: "binary".to_string(),
impl_trait: None,
sig_key: None,
});
}

Expand Down Expand Up @@ -204,6 +206,8 @@ fn do_extract(
doc: None,
annotations,
language: "binary".to_string(),
impl_trait: None,
sig_key: None,
});
}

Expand Down Expand Up @@ -247,6 +251,8 @@ fn do_extract(
line: 0,
}],
language: "binary".to_string(),
impl_trait: None,
sig_key: None,
});
}

Expand All @@ -271,6 +277,8 @@ fn do_extract(
doc: s.string.as_deref().map(|s| s.chars().take(200).collect()),
annotations: Vec::new(),
language: "binary".to_string(),
impl_trait: None,
sig_key: None,
});
}

Expand Down Expand Up @@ -311,6 +319,8 @@ fn do_extract(
symbols,
chains,
calls,
fn_ptr_assigns: Vec::new(),
file_deps: None,
})
}

Expand Down Expand Up @@ -552,6 +562,9 @@ fn build_chains_with_cfg(
target_method: None,
into_var: None,
is_new_var: false,
receiver_text: None,
resolved_via: codegraph_core::ResolutionKind::default(),
candidates: Vec::new(),
});
}
"cjmp" => {
Expand Down Expand Up @@ -635,6 +648,9 @@ fn build_chains_from_graph(
target_method: None,
into_var: None,
is_new_var: false,
receiver_text: None,
resolved_via: codegraph_core::ResolutionKind::default(),
candidates: Vec::new(),
});
}
chains.insert(caller_id, chain);
Expand Down
8 changes: 8 additions & 0 deletions crates/codegraph-context/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,8 @@ mod tests {
doc: None,
annotations: Vec::new(),
language: "java".into(),
impl_trait: None,
sig_key: None,
}
}

Expand Down Expand Up @@ -327,6 +329,8 @@ mod tests {
symbols: vec![sym_at("RestEndpoint", 100, abs.as_str())],
chains: std::collections::HashMap::new(),
calls: vec![],
fn_ptr_assigns: Vec::new(),
file_deps: None,
};
idx.ingest(&[r], None).await.unwrap();
}
Expand Down Expand Up @@ -365,6 +369,8 @@ mod tests {
symbols: vec![sym("RestEndpoint", 100)],
chains: std::collections::HashMap::new(),
calls: vec![],
fn_ptr_assigns: Vec::new(),
file_deps: None,
};
idx.ingest(&[r], None).await.unwrap();
}
Expand Down Expand Up @@ -397,6 +403,8 @@ mod tests {
symbols: vec![sym("RestEndpoint", 100)],
chains: std::collections::HashMap::new(),
calls: vec![],
fn_ptr_assigns: Vec::new(),
file_deps: None,
};
idx.ingest(&[r], None).await.unwrap();
}
Expand Down
Loading
Loading