跨档复杂性
Vize的跨文件复杂度报告是由Croquis制作的项目图摘要。它不是 诊断规则本身;这是一个可解释的分数,下游工具可以在报告中显示, 操场和基于门槛的未来检查。
该模型将三个复杂度信号映射到 Vue:
模板路径计数:每个组件一个基点,加上
v-if、v-for和v-if表达式中的布尔算子。嵌套控制流:更深层的模板流成本更高,包括嵌套 通过子元件继续。
组件-边界数据流:props、提供/注入和反应边依然存在 以跨界信号的形式可见,而非被压扁成一个文件。
分数
报告既揭示了原始信号,也提供了衍生分数。
| 场 | 含义 |
|---|---|
cyclomaticScore |
分量碱计数 + v-if + v-for + v-if 中的布尔算子。 |
cognitiveScore |
组件树模板嵌套分数,涵盖v-if、v-for和范围槽。 |
totalScore |
维度得分之和:模板流量、槽位、道具钻孔、全局状态、提供/注入、跳跃计量和反应图。 |
band |
面向人类的桶:low、moderate、high或extreme。 |
原始输入还会保留分数后面的数字,包括:
| 信号 | 为什么重要 |
|---|---|
componentTreeVIfMaxDepth |
长路径跨父组件和子组件需要更多状态来测试。 |
componentTreeVForMaxDepth |
跨组件边界嵌套的循环会放大渲染和数据形状的复杂性。 |
componentTreeScopedSlotMaxDepth |
带范围槽将父模板和子模板耦合,因此它们的深度与普通槽数分开追踪。 |
propDrillingEdgeCount |
道具边表示跨界数据流。 |
provideInjectMaxDepth和provideInjectReferenceCount |
深层或宽广的DI树会让本地所有权检查变得更困难。 |
reactiveNodeCount、reactiveEdgeCount和reactiveCycleCount |
反应式图捕捉声明级别的状态、效应和易丢失周期。 |
组成边界
模板复杂度不限于一个SFC。Croquis 构建模块注册表和组件使用系统
先绘制图,然后带周期保护的组件边。父母v-if孩子,一个
父节点v-for子节点,子节点区位都贡献于同一个组件树
筑巢路径。
这意味着一个看起来浅的部件在前进带瞄准镜的槽位时仍能获得高分, 钻探螺旋桨,或者依赖深层供料/注入路径。游乐场的跨文件模式显示 在诊断旁边评分,这样编辑灯具时这些信号就能看见。
热点
报告还会暴露排名热点,方便工具指向创建
分数,而不是只显示一个项目级别的数字。每个热点都承载本地分数输入,
维度得分、总分和主导维度。请用dominantDimension来解释为什么
进入电位很高,然后用input显示驱动它的原始信号。
当前水面
公共 JSON 形状可通过 WASM 跨文件绑定获得,如下
CrossFileResult.complexityReport和CrossFileResult.complexityHotspots。CLI不会失败
还在这基础上继续发展。将报告作为探索信号,然后促进稳定阈值
只有在项目特定基线存在之后。