スリ飯屋MaLankaのフリーエンジニアな日々

このブログでは、フリーランス5期目となる自身の実体験から、フリーランスエンジニアになるためのノウハウ、ブログや沖縄移住、スリランカの最新情報について発信します。

【Dip Rubocop】DipでRubocopのチェック対象をgit diffで変更のあったファイルのみを対象とする

※記事内に提携先企業のアフィリエイト広告(リンク、バナー等)、Google広告を含む場合があります

【Dip Rubocop】 DipでRubocopのチェック対象を、 git diffで変更のあったファイルのみを対象とする


こんにちは、現役沖縄フリーランスエンジニアのmah(MaLanka)です。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、


  • 【Dip Rubocop】DipでRubocopのチェック対象をgit diffで変更のあったファイルのみを対象とする


について書いていきます。




【Dip Rubocop】DipでRubocopのチェック対象を変更のあったファイルのみに絞る


Dipを入れたDocker環境でRubobopを実行していたが、

いちいちファイル指定しないと全ファイルにRubocopが走って面倒だったので、

git diffで変更のあったファイルのみが対象になるようにしました。




結論


Dipを使える状態で下記のようなdip.ymlを作成し、

$ dip cop を実行すると、

DipでRubocopのチェック対象をgit diffで変更のあったファイルのみを対象にできます。


# dip.yml
version: '7.0'

environment:
  COMPOSE_EXT: development

compose:
  files:
    - docker-compose.yml
  project_name: example_server

interaction:
  cop:
    description: Run rubocop
    service: web
    default_args: $( git diff --name-only --diff-filter=AMRC | grep -e ".*\.rb" | paste -s - )
    command: bundle exec rubocop


  • dip

github.com




手順


まず、

DipでRubocopを実行できるようにするため、

dip.yml のinteraction以下に cop という定義を追加します。


# dip.yml
version: '7.0'

environment:
  COMPOSE_EXT: development

compose:
  files:
    - docker-compose.yml
  project_name: example_project

interaction:
  cop:
    description: Run rubocop
    service: web
    default_args: $( git diff --name-only --diff-filter=AMRC | grep -e ".*\.rb" | paste -s - )
    command: bundle exec rubocop


このinteraction以下に定義した名前が、

dipコマンドの引数として使えます。

(自分が使いやすい名前であれば名前はなんでもいいです)


これでdipコマンドの引数として cop が使え、

command で指定されたコマンドを実行するようになります。

$ dip cop




そしてcopの引数(bundle exec rubocopの引数)には、

default_args で指定されたものが使用されます。


default_args: $( git diff --name-only --diff-filter=AMRC | grep -e ".*\.rb" | paste -s - )


「git diffで変更のあったファイルのみを対象とする」について、

default_args に指定されている --name-only --diff-filter=AMRC で実現しています。


git diffの --name-only オプションについては下記ドキュメントを参照ください。


  • git-diff - Show changes between commits, commit and working tree, etc

git-scm.com




dip copの後に引数を渡したい場合


dip copの後に引数を渡したい場合は、

普通に $ dip cop の後にrubocopの引数を渡せばOKです。

(この場合 default_args で指定されている引数は無視されるので注意)


# 例. auto correctする
$ dip cop -a

# 例. 差分のみを対象にauto correctする
$ dip cop -a $( git diff --name-only --diff-filter=AMRC | grep -e ".*\.rb" | paste -s - )




最後に


下記の表に、

フリーランスエンジニア向けの人気エージェントをまとめてみました。


エージェント選びで悩んでいる方は是非参考にしてみてくださいね★


エージェント 詳細 最高単価/月 設立
フリエン(furien) 評判をチェック 180万円/月 2011年
ギークスジョブ 評判をチェック 180万円/月 2011年
フォスターフリーランス 評判をチェック 230万円/月 1996年
pe-bank(pebank) 評判をチェック 200万円/月 1989年
Midworks(ミッドワークス) 評判をチェック 200万円/月 2013年
レバテックフリーランス 評判をチェック 140万円/月 2005年