Sider（旧Side CI） の ESLint  v5 で Markdown ファイルが叱られる（Unexpected character '#'）

# [eslint] Error - Parsing error: Unexpected character '#'

GitHub で利用できる自動コードレビュー・サービス[「`Sider`」（旧`Side CI`）](https://sider.review/ja)で ES Lint のチェックを有効にすると Markdown ファイルが叱られる。`sideci.yml` で `ext: 'js'` とJS ファイルを明示しても NG。

> [eslint] Error - Parsing error: Unexpected character '#'
> 
> ```
> # はじめに
> これは README のテキストです。
> ```

## TL;DR

`*.js` ファイルが１つも無い場合の ESLint v5.4.0 からの仕様です。「Sider」（旧SideCI）で ESLint を有効にし、`sideci.yml` に ESLint の検索対象のディレクトリを全て（「`./*`」）に指定している場合に発生します。

以下のいずれかをお試しください。

- ダミーの「`*.js`」ファイルを設置する。
- 何かしらの「`*.js`」ファイルを設置するまで Sider 側の ESLint を無効にする。

## TS;DR

[ESLint](https://en.wikipedia.org/wiki/ESLint) は、JavaScriptの静的コード分析ツールです。JavaScript のコードで見つかった問題のあるパターンを識別してくれます。

ESLint v4 系の場合は Javascript ファイルが１つもない場合は「`success`」を返していましたが、ESLint の v5.4.0 からチェック対象の Javascript ファイルが１つもない場合はエラーを吐き出すようになりました。

[`sideci.yml` で `eslint` のディレクトリを明示すると回避できる](https://qiita.com/KEINOS/items/bac1e1c46df64311d8a2)ことがわかったので、「`dir: './*'`」と設定して回避できていたのですが、新規 Markdown を追加したところ、レビューが通らなくなりました。該当 Markdown ファイルに意図しない文字「`#`」があるとのこと。

> [eslint] Error - Parsing error: Unexpected character '#'
>
> ```
> # はじめに
> これは README のテキストです。
> ```

しかし、「Sider」側のログをみると、新規追加の Markdown ファイルどころか他の Markdown ファイルにもゲーゲー言っており、パースエラーの種類を網羅する勢い。

- `No id found! - Error - Parsing error: Unexpected character '#'`
- `No id found! - Error - Parsing error: Unexpected token . : < 4.0`
- `No id found! - Error - Parsing error: Unexpected token Status`


```text:TraceLog
Running analyzer
# eslint --format=compact --no-color --output-file=/tmp/d...r/output.txt --ext=js ./*
exit status: 1

output.txt

/tmp/d...r/CODE_OF_CONDUCT.md: line 1, col 1, Error - Parsing error: Unexpected character '#'
/tmp/d...r/composer.json: line 2, col 11, Error - Parsing error: Unexpected token :
/tmp/d...r/index.php: line 1, col 1, Error - Parsing error: Unexpected token <
/tmp/d...r/LICENSE_OUTLINE.md: line 1, col 1, Error - Parsing error: Unexpected character '#'
/tmp/d...r/LICENSE.md: line 1, col 24, Error - Parsing error: Unexpected token 4.0
/tmp/d...r/MEMBERS.md: line 1, col 1, Error - Parsing error: Unexpected character '#'
/tmp/d...r/README.md: line 1, col 10, Error - Parsing error: Unexpected token Status
/tmp/d...r/sideci.yml: line 4, col 10, Error - Parsing error: Unexpected token .

8 problems

# eslint --version

v5.4.0
exit status: 0
No id found! - Error - Parsing error: Unexpected character '#'
No id found! - Error - Parsing error: Unexpected token :
No id found! - Error - Parsing error: Unexpected token <
No id found! - Error - Parsing error: Unexpected character '#'
No id found! - Error - Parsing error: Unexpected token 4.0
No id found! - Error - Parsing error: Unexpected character '#'
No id found! - Error - Parsing error: Unexpected token Status
No id found! - Error - Parsing error: Unexpected token .
Removing issues from unchanged or untracked files...    -> 6.0005e-05s
Writing result...    -> 0.000254659s
```

観念してダミーの Javascript ファイルを設置したところ、すんなり回避できたのですが、使わないファイルがあるのも気持ち悪いので、実際に設置するまで設定を無効にしておくことにしました。（で、設置したらしたで設定を有効にするのを忘れるというフラグ）

### 併せて読みたい

- [ESLint 最初の一歩](https://qiita.com/mysticatea/items/f523dab04a25f617c87d) @ Qiita

### 参考文献

- [Sider（旧Side CI） の ESLint v5 で「No files matching the pattern "." were found.」](https://qiita.com/KEINOS/items/bac1e1c46df64311d8a2) @ Qiita