jscpd に無視してもらいたい
はじめに
jscpd は素晴らしいツールです
あらゆる言語で書かれたコードから重複を見つけ出して指摘してくれます
コピー&ペーストであちこちに重複ができてしまうと、無駄にコード量が増えるだけでなく、メンテナンス時にもあちこちを修正せねばならず、変更漏れがあればバグが発生してしまいます
重複はバグの温床、取り除かねばならないのです
以前の記事でも書きましたが、私は GitHub Actions の Super-Linter でいつもお世話になっています
jscpd に指摘されて、処理を共通化することもよくあります(つまり未熟)
しかし、それでも、どうしても見逃して貰いたいときもあるのです
どうしても無視してほしい
ある仕組みの中で、設定情報を json ファイルに持っています
個別のものに対して、同一項目同一値の行が続き、 jscpd に怒られました
例えばこんな感じだと
{
"aaa": {
"vvv": "VVV",
"www": "WWW",
"xxx": "XXX",
"yyy": "YYY",
"zzz": "ZZZ"
},
"bbb": {
"vvv": "VVV",
"www": "WWW",
"xxx": "XXX",
"yyy": "YYY",
"zzz": "ZZZ"
}
}
jscpd がこんな風に指摘してきます
Clone found (json):
- /hello.json [9:7 - 15:3] (7 lines, 97 tokens)
/hello.json [2:7 - 8:3]
9 | 2 | ": {
10 | 3 | "vvv": "VVV",
11 | 4 | "www": "WWW",
12 | 5 | "xxx": "XXX",
13 | 6 | "yyy": "YYY",
14 | 7 | "zzz": "ZZZ"
15 | 8 | }
しかし、同じ値ではあるものの、別のものなので共通化せずに別のままにしておきたいのです
コメントで無視する箇所を指定する方法もあります
/* jscpd:ignore-start */
import lodash from 'lodash';
import React from 'react';
import {User} from './models';
import {UserService} from './services';
/* jscpd:ignore-end */
しかし、 json にはコメントを入れることができません
jscpd の設定ファイル
というわけで、設定ファイルで無視対象を指定することにしました
GitHub Actions で動かしている場合、 .github/linters/.jscpd.json
に以下のように記載します
{
"threshold": 0,
"reporters": [
"consoleFull"
],
"ignore": [
"**/*.json"
],
"absolute": true
}
これで json については jscpd の対象外にすることができました
最後に
Super-Linter は様々な linter を動かしてくれます
基本的には設定ファイルを指定できるようになっているので、各 linter の公式を参照して設定方法を確認しましょう
Author And Source
この問題について(jscpd に無視してもらいたい), 我々は、より多くの情報をここで見つけました https://qiita.com/RyoWakabayashi/items/8c3d026a481474c9bcf4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .