Super-Linter で JSCPD の ENOTDIR エラーが出たときの対処
はじめに
Super-Linter 便利ですよね!
かつては言語毎にlintの設定を GitHub Actions に一生懸命組み込んでいましたが、 Super-Linter が大概のものは勝手に見てくれます
しかし、新しく対応した linter に急に弾かれるようになったり、相反するルールを見るせいで弾かれたり、時々振り回されることもあります
先日、 Super-Linter を意気揚々と動かしたところ、以下のようなエラーが発生しました
2021-06-10 06:46:08 [ERROR] Found errors in [jscpd] linter!
2021-06-10 06:46:08 [ERROR] Error code: 1. Command output:
------
Error: ENOTDIR: not a directory, scandir '/github/workspace/.github/linters/.hadolint.yaml'
at Object.readdirSync (node:fs:1048:3)
at readdir (/node_modules/@nodelib/fs.scandir/out/providers/sync.js:39:31)
at Object.read (/node_modules/@nodelib/fs.scandir/out/providers/sync.js:12:12)
at SyncReader.scandirSync [as _scandir] (/node_modules/@nodelib/fs.scandir/out/index.js:17:17)
at SyncReader._handleDirectory (/node_modules/@nodelib/fs.walk/out/readers/sync.js:28:34)
at SyncReader._handleQueue (/node_modules/@nodelib/fs.walk/out/readers/sync.js:23:18)
at SyncReader.read (/node_modules/@nodelib/fs.walk/out/readers/sync.js:15:14)
at SyncProvider.read (/node_modules/@nodelib/fs.walk/out/providers/sync.js:11:29)
at ReaderSync.walkSync [as _walkSync] (/node_modules/@nodelib/fs.walk/out/index.js:19:21)
at ReaderSync.dynamic (/node_modules/fast-glob/out/readers/sync.js:13:21) {
errno: -20,
syscall: 'scandir',
code: 'ENOTDIR',
path: '/github/workspace/.github/linters/.hadolint.yaml'
}
------
jscpd め、、、
というわけで、対処した記録です
エラー原因
.hadolint.yaml
は Dockerfile の linter である hadolint の設定ファイルです
hadolint をローカルで実行するときのため、この設定ファイルをプロジェクトのルートに配置しています
その上で、 Super-Linter からも参照できるように .github/linters/.hadolint.yaml
にシンボリックリンクを貼りました
これで hadolint が通るはず、と思ったところ、上記エラーに逢いました
jscpd はコードの重複を探し出してくれます(ときどきコピペで jscpd に怒られます)
jscpd がシンボリックリンク自体を解析しようとしてエラーになったようです
Super-Linter の公式 Issue にもありますが、取り合ってもらえず閉じてますね
対処
というわけで、シンボリックリンクを置くのではなく、 Super-Linter の参照先を変えることにしました
Super-Linter 実行時の環境変数 LINTER_RULES_PATH
に .
を指定します
- name: Super Linter
uses: github/super-linter@v3
env:
LINTER_RULES_PATH: .
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
これでプロジェクトのルート直下にある設定ファイルを参照できるようになります
公式がシンボリックリンクに対応してくれるまでは、こっちの対処しか使えません
どうしてもシンボリックリンクを使いたくなったら、、、その時はまた考えましょう
関連
設定ファイルの指定方法を解説してくれている記事です
Author And Source
この問題について(Super-Linter で JSCPD の ENOTDIR エラーが出たときの対処), 我々は、より多くの情報をここで見つけました https://qiita.com/RyoWakabayashi/items/6fe0e22ce7f692d67d04著者帰属:元の著者の情報は、元の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 .