2019-07-11 从 jsinspect 迁移到 jscpd


jscpd 是一个用于检测重复代码的工具,拒绝 copy/pause 从选择优秀的工具开始。

目前负责的项目的 package.json 中有如下命令:

//  package.json
{
  "scripts:": {
    "check:quality": "npx jsinspect -t 50 src",
  }
}

但是,这只是从上一个项目继承过来的祖传代码,从来没有人使用过。

一般情况下,我的原则都是没有用的代码,全部删除。 但是存在必有其存在的道理,先分析一下。

  • 这段代码有什么作用?
    • jsinspect 检查复制/粘贴,或者类似代码的工具。
  • 为什么没有人使用?
    • 我运行了一下,结果得到一大堆 log,十分茫然,不知道接下来要做什么。
    • 没有简单易懂的结果报告。

从上面分析可以看出,功能还是有用的,最起码能知道项目中有多少重复代码。就是工具选择的不恰当,没有易用性。

改进方法就是寻找替代方案。 于是我找到 jscpd

jscpd 对比 jsinspect 优势

  1. 仍在维护。(这点太重要了)
  2. 运行结果内容清晰,且报告比较美观。

jscpd 使用

官网示例非常简单,推荐直接阅读。

TL;DR

1. config file

{
  "threshold": 0.1,
  "reporters": ["html", "console"],
  "ignore": ["**/__snapshots__/**"],
  "absolute": true
}

- package.json

{
  "scripts:": {
    "check:quality": "npx jscpd src",
  }
}

运行结果对比:左:jsinspect,右:jscpd

对比之后,效果显而易见。jscpd 完胜。

refs: