Skip to main content

Module community

Module community 

Source
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 的常量分辨率)