Layout/EndOfLine: Carriage return character detected.の対処法「rubocop」

Webエンジニアへの道

 また、Windowsの問題の話になりますが、私がrubocopを使用している時によく見かける警告の対処法を紹介します。大体は公式のドキュメントを見れば解決できるのですが、どうしても解決できない警告が1つありました。

Layout/EndOfLine: Carriage return character detected.の警告

ほぼ全てのファイルでこの警告が毎回検出されてしまいますのでrubocopを実行した時バーッと警告が流れてくるので気分悪いです。( ノД`)

日本語に訳すと、キャリッジリターン文字が検出されたという警告ですね。ですがキャリッジリターン文字ってなんやねんwってなったので調べてみると、「カーソルを先頭に戻す文字」とでてきました。

矢印で表すと恐らく ↲や↓になるのでしょうか。

 

解決策

rubocopを構成しているファイル、私の場合はrubocop.ymlですがそこに、

を入れます。crlfというのはWindowsで使用される改行コードのことです。LinuxなどのUNIX系の場合はcrlfではなくlfという改行コードを用いているためlfに変更する必要あります。これで大体の警告は消えるのですが、下図のようにまだ警告が残っている場合もあります。

そういった場合には、コードの最後の行でEnterを押して改行させて、backspaceで元の位置に戻すということを試したらよいと思います。理由は分かりませんがこれで直りました。

CircleCIを使う時の注意

私は現在自分で作成したアプリにCiricleCIを導入しています。CircleCIは本当便利でいちいちコマンドを打たなくてもherokuにデプロイしてくれたり、rubocopを実行してくれます。一度デプロイできなさすぎて挫折しかけた私にとって本当画期的なものだと思います。(笑)

ただ、一つ問題があり、CircleCIがWindowsではなく、Linuxで動いている点です(Macの場合もありますが)。つまり、CircleCIでrubocopを導入するなら、crlfからlfに変更しておかないと一生CircleCI側で警告が出ます。なので

開発を進める中でずっと思っていましたが、Windowsだけ色々不遇なような気がします。LinuxやMacでは普通に対応していることがWindowsではできない、または別のやり方を試してくださいというような。本当にWindowsが世界のOSのシェアを8割超えているのか疑問に思ってしまいます。

最後に

Windowsへの愚痴はさておき、今回この記事を書いて思ったのは、公式のドキュメントとかが英語で書いてあってなんだか読みたくないなと思ってもちゃんと読もうと思いました。よく読まず、コードに書いてあることをそのままやればいけるでしょ!とか思ってやるといつか痛い目にあいます。私はそれで怒られましたので。最悪googleさんに翻訳してもらえば、変な日本語になりますが意味はなんとなくわかりますし!

参考資料:https://www.weblio.jp/content/キャリッジリターン

                 https://github.com/rubocop-hq/rubocop/issues/4293

 

 

タイトルとURLをコピーしました