DSH Quality

C 级插件:当「够用」变成一个陷阱

C 级插件是那种快速看没问题、细看就有问题的东西。本文讲风险真正落在哪里、为什么边缘插件最容易漏过评审,以及用三个问题决定装不装。

C 级插件是那种快速看没问题、细看就有问题的东西。这也是它最难办的地方:D 级很好判断,没人会装;C 级离「还行」太近,团队扫一眼就批了,而且多数人之后再也不会回头看。本文讲 c grade plugin risk 在实际里是什么:what a C grade means 在 0-100 评分里代表什么,为什么 borderline dsh plugins 是最容易漏过评审的一类,以及 should you install a C-grade plugin 时用三个问题解决,而不是靠感觉。

C 级到底在量什么

评分由维护、文档、npm 健康度和生态信号构成。C 级不是说这个插件坏了,而是这几项里好几项同时表现平平,又没有哪一项强到能把平均分拉上去。

信号C 级的典型读数它告诉你什么
维护最近一次提交在两到五个月前没人真的在修它,也没人放弃它
文档README 很短,没有升级说明基本问题得靠读源码来回答
npm 健康度下载量低,版本号还在动用户少,替你先踩坑的人也就少
生态单一维护者,没有值得注意的下游依赖维护者一停,没人接手

合起来看,这是一个今天能用、明天没有明确安排的插件。评分的拆解在 /blog/dsh-quality-score-decoded。

c grade plugin risk 来自哪里

风险很少在代码里,而在你依赖它之后发生的事上。C 级是对那件事的预测,不是对眼前代码质量的判定。

  • 修复要多久。维护信号慢的插件不会按你的排期出补丁。bug 赶在你的发布周出现,就得你自己扛。
  • 理解成本。文档薄,成本就转嫁到团队身上。总得有人去读源码,而那个人往往就是当初批准它的人。
  • 退出成本。没有别人依赖的插件,维护者一停就没有现成的 fork。要么你自己接手维护,要么把它拆掉。
  • 静默漂移。平庸的插件更新不发公告。上个月还好用的版本,可能已经改了行为,而任何地方都没有说明。
C 级是对未来六个月的预测,不是对你今天能读到的代码的判决。

为什么边缘插件最容易漏过评审

评审者的耐心是固定的,而且都花在信号最响的地方。带危险安装脚本的插件会被逐行读完;C 级插件只会被扫一眼,因为它身上没有任何地方看起来不对。

  • 没有明显坏掉的东西,就没有触发深挖的理由。
  • README 回答了第一个问题,于是显得「文档够了」。
  • 分数不惊人,而时间压力下「不惊人」会被读成「可以接受」。
  • 没人把审批写下来,半年后既没有记录,也不知道是谁、为什么做的决定。

B 级版本的同一场讨论在 /blog/what-a-b-grade-dsh-plugin-tells-you,规律一样:中间这段区间最需要判断,也最缺少判断。

什么时候 C 级没问题,什么时候有问题

很多 C 级插件都是正确的选择。决定因素是它能碰到什么,以及你拆掉它有多容易。

  • 没问题:只在本地用、一个人用、不碰凭据、有真实的卸载路径。最坏结果不过是浪费一个下午。
  • 没问题:只评估一周、还不打算上线的插件。还没有东西依赖它的时候,分数没那么重要。
  • 有问题:任何跑在共享构建机上的东西。那里一个停滞的插件卡住的是整个团队,不是某一个人。
  • 有问题:任何读凭据、往自己目录之外写文件、或者在安装阶段执行的东西。这类需要更高的等级或者沙箱,沙箱流程在 /blog/how-install-script-scanning-works。

把一个 C 变成一个决定

三个问题能覆盖多数情况,而且三个都有很短的答案。

  • 它能碰到什么?凭据、网络、它自己目录之外的文件。把清单写下来,因为这份清单决定后面所有判断。
  • 你多快能把它拆掉?如果诚实的答案是「没试过」,那这个插件比等级显示的更危险。
  • 批准之后归谁?要一个具体的人,不是一个团队。归属才是半年后把一次决定变成习惯的东西。

三个答案都让人放心,就装上并加进观察列表。只要有一个让人不放心,问题就不在等级,而在匹配度。

常见问题

  • C 级等于不安全吗?不等于。安全和维护是两条独立的轴。维护良好的插件也可能带危险的安装钩子,没人管的插件也可能完全无害,两条都要看。
  • C 级会变好吗?会,而且值得盯。一次更新依赖、补上文档的发布就会推动分数,所以观察列表胜过一次性检查。
  • 要不要一律设 B 级为门槛?那会挡掉有用的插件,也照样放过有风险的。按插件能碰到什么来设闸门,别按字母。
  • 它和 B 级的区别是什么?B 级是多数信号良好、只有一处偏弱;C 级是好几个信号同时平平,弱点是分散的,也更难说清。
  • 如果没有替代品怎么办?装上,限制它能碰到的范围,并且在需要之前就把卸载步骤写下来。

dshquality.com 上每个插件页都会列出构成等级的各项信号,你能看清是哪一项把分数拖到了 C,而不用猜。评分构成在 /blog/dsh-quality-score-decoded,为什么这套评分要坚持独立于自报数据在 /blog/why-independent-plugin-scoring-beats-self-reported-ratings,站内全部文章在 /blog。

c grade pluginc grade riskborderline pluginsdsh quality scorec grade plugin riskborderline dsh pluginswhat a C grade meansshould you install a C-grade plugin