LoginSignup
5
5

More than 5 years have passed since last update.

rspecでコード上の間違った記述などをチェックする

Last updated at Posted at 2016-11-14

間違った記述に対してのチェック

経緯

railsでasset_syncを使って、cloudfrontなどで静的ファイルの配信をしている時に、
ローカルやステージングで、画像パスを"../about/tile.png"など相対パスで書いてしまう人がいて
リリース前の確認環境になってやっと気づいたり、気付かずにリリースして問題になることが多々あった。

どうするか

git grepして対象の記述があれば注意するという人間ができそうなフローを、
rspecで自動化する。
参考コードを改善する3つの方法

spec/original_spec.rb
require "rails_helper"

describe "間違ったpathの記述がない" do
  context "css編" do
    let(:target_path) {"app/assets/stylesheets"}
    it "./ ←こういうpathの記述だめだって!!もう!!" do
      pattern = "./"
      expect(git_grep_e(pattern, target_path)).to be_empty
    end

    it "image-url って記述つかってよね もう!!" do
      pattern = "background-image:url"
      expect(git_grep_e(pattern, target_path)).to be_empty
    end
  end
end
spec/support/git_grep.rb
module GitGrep
  def git_grep_e(pattern, *path)
    cmd = "git grep --line-number -e '#{pattern}'"
    cmd = "#{cmd} -- #{path.join(" ")}" unless path.empty?
    `#{cmd}`.split("\n")
  end
end
spec/rails_helper.rb
RSpec.configure do |config|
  # ↓追記
  config.include GitGrep
end

表示

  • 該当するファイル名や行数も表示されて修正個所も分かりやすい

image

まとめ

git grepできるものなら何でもチェックできそう。
ご判定があったら、white_list的なものを定義してやればなんとかなりそう。
例ではcss周りをやっているけれど、
rubocopなどにルールはないけど、独自のコーディング規約のチェックをしたい!
なんて時にも使えそう。
RSpecでFactoryGirlの記述は省略するとかも。

参考URL

コードを改善する3つの方法

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5