Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2914

ファイル末尾に改行がないと怒ってくれるGithubActions

$
0
0

行儀がよくないエディタがあるのを知った。
中身があるのに、最後の行が改行で終わってくれない。
調べると、POSIXのファイル仕様に違反するらしいがよくわからん。

動きはするが、とても気持ちが悪い。
そこで、レポジトリにこのようなファイルがあると、Github Actionsで怒られるようにした。

bashスクリプト

以下のbashスクリプトをレポジトリに入れておく。

動作としては、findで対象ファイル一覧を作って、参考文献のカッコいい方法で各ファイルの末尾をチェックしていく。
違反ファイルがあると、ファイル一覧を出力してエラー終了する。

ファイル数は大したことない前提で見やすい書き方にしている。対象ファイルが多い場合は、エラーファイルを溜めないようにループするように書き換える必要があると思う。

コード

./scripts/check_endoffile_with_newline.sh
#!/bin/bash# 対象ファイルのリスト#   一部パスを除外している#   対象は拡張子で指定しているfiles=$(find .\-not-path"./node_modules/*"-not-path"./public/*"\-not-path"./vendor/*"\-type f -regex'.*\.\(rb\|erb\|css\|scss\|js\|yml\)')error_files=""for file in${files};do# 改行で終わってないファイルを探し記録する# 参考: https://qiita.com/BlackCat_617/items/c0d7f7378bc55b3e07d0if[`tail--lines=1 ${file} | wc--lines`== 0 ];then
        error_files="${error_files}${file}"fi
done

if["${error_files}"==""];then
    echo"Good."exit 0
else
    echo"[ERROR] There are some files without newline in end of file."for file in${error_files};do
        echo"  ${file}"done
    exit 1
fi

実行例

$./scripts/check_endoffile_with_newline.sh
[ERROR] There are some files without newline in end of file.
  ./config/locales/models/ja.yml
  ./app/views/users/new.html.erb
  ./app/views/users/show.html.erb
  ./app/views/layouts/_footer.html.erb
  ./app/views/layouts/_header.html.erb
  ./app/views/shared/_error_messages.html.erb
  ./app/assets/stylesheets/header.scss
  ./app/assets/stylesheets/footer.scss

Github Actionsの設定

以下のように、好きな名前をつけてスクリプトを実行する。

コード

# ~省略~-name:End of File with Newlinerun:./scripts/check_endoffile_with_newline.sh# ~省略~

実行例

image.png

所感

  • 「人がコードの指摘をする」のは指摘するほうもされる方も消耗していく
  • 機会的な指摘だと、指摘された方は消耗しづらい
  • コードレビューはできる限り自動化していこう

参考


Viewing all articles
Browse latest Browse all 2914

Trending Articles