Cha
1.15.0 - 2026-05-14
v1.15.0
May 21 2026 at 07:43 UTC
Added
ProjectQuerytrait incha-core— plugins now access cross-file data through a typed interface onAnalysisContext.projectinstead of host-side post-hoc string-matched filtering. 12 methods cover the project-level queries existing post-analysis passes need:is_called_externally,callers_of,function_home/function_by_name/class_home,is_third_party,workspace_crate_names,is_test_path, etc. WASM plugins also gain access via theproject-queryhost import.ProjectQueryBulktrait extendsProjectQueryfor in-process iteration (iter_models); not exposed to WASM.cha_core::is_test_path— public utility consolidating two duplicated implementations.- example-wasm
unused_helpersmell — demonstratesproject_query::callers_ofcallback.
Changed
- WIT bumped to
cha:plugin@0.3.0(breaking) — addsproject-queryhost import. External plugins compiled against0.2.0must rebuild. large_api_surfaceC/C++ heuristics —.h/.hppheaders are now skipped (their 100% public surface is by design);.c/.cppimplementation files use a higher count threshold (30, configurable asc_max_exported_count) and the ratio gate is effectively off (configurable asc_max_exported_ratio). lvgl baseline: 393 → 34 findings (-91%).dead_codeis now project-aware — usesProjectQuery::is_called_externallyto confirm cross-file usage; the per-file text search is just an early shortcut. The token-concat macro heuristic (#define ... ##) remains because parsers don't macro-expand. lvgl baseline: 67 → 6 findings (-91%).
Removed
Plugin::cross_file_aware_smellstrait method — replaced by typed query throughAnalysisContext.project.cha-cli::cross_file_filtermodule — the post-hoc string-matched filter is gone; plugins produce final findings using the typed trait.- 3 duplicated
workspace_crate_namesimpls + 3 duplicatedis_third_party/is_external_leakimpls + 2 duplicatedis_test_pathimpls — all consolidated.
Added
- New
.cha.tomlconfig keys forapi_surface:max_exported_ratio,c_max_exported_count,c_max_exported_ratio,skip_c_headers. All language-aware defaults preserved.