Expand description
文件级社区检测:用 leiden-rs(Leiden 算法,CPM 质量函数)在文件依赖图上 划分功能内聚的模块社区,替代旧的“目录前缀凝聚聚类“。
设计要点(对应演进计划 T1.2/T1.3):
- 聚类单位是 File 节点,依赖边取跨文件的 Imports/Calls (同文件内调用是内部实现细节,不参与模块划分);
- 边权重与 graph.rs 构建时一致(Imports=0.8 / Calls=0.7), 同对文件间多条边按权重相加聚合;
- CPM 质量函数 + 固定种子(确定性输出,可复现);
- 无跨文件依赖时退化为“每文件一个社区“(Leiden 对无边图无划分意义);
- 社区命名三档规则见
community_name(T1.3):公共目录前缀 → 文件数最多目录 → module_{n},保证产物路径与断链检测的确定性。
Constants§
- WEIGHT_
CALLS - WEIGHT_
IMPORTS - 社区检测边权重(与 src/analysis/graph.rs 构建时的字面量同源)
Functions§
- community_
name - 社区命名三档规则(T1.3):
- detect_
communities - 文件级社区检测:返回 File 节点的社区划分(每社区一个
Vec<NodeId>) - detect_
communities_ with_ resolution - 带分辨率参数的社区检测(v13 D3 拆分:评测工具 gamma_scan 需要扫描 多个 γ 取值找最优粒度,生产默认走 detect_communities 的常量分辨率)