Hieu Nguyen

Xoá code thừa trong rails app

Feb 1 2018


Sau một thời gian phát triển thì Rails app thường phình lên khá to, và nếu không được dọn dẹp thường xuyên thì sẽ xảy ra tình trạng có nhiều code dư thừa, hoặc không được dùng đến nữa. Những đoạn code này, dù không chạy, nhưng vẫn gây ra vấn đề cho bạn:

Dưới đây là một số tool mình thu nhặt được để dọn dẹp bớt đống code dư thừa đó.

Xoá method không dùng đến bằng unused

unused là một thư viện cực kỳ tuyệt vời, nó có thể giúp bạn tìm ra hầu hết các method và class hầu như không được sử dụng trong hệ thống và xoá chúng đi (bước này thì bạn phải tự làm). Cách sử dụng unused khá dễ:

# MacOS
brew install ctags

# Ubuntu
apt-get install ctags
# MacOS
brew tap joshuaclayton/formulae
brew install unused

# Other: bạn phải cài đặt stack, 
# cũng như phải thay đổi một chút config để cài thành công
stack update
stack install unused
ctags -R . # tạo tags file
unused

Xoá partial dư thừa:

Gem discover-unused-partials rất hữu ích trong việc giúp bạn tìm ra những partial không còn được dùng đến trong codebase của bạn. Cách sử dụng cũng rất dễ dàng:

gem install discover-unused-partials
discover-unused-partials .

Xoá các step dư thừa trong cucumber

Cucumber có options --dry-run -f stepdefs rất hữu ích trong việc tìm ra những step không được dùng đến nữa:

cucumber --dry-run -f stepdefs | grep -B 1 "NOT MATCHED BY ANY STEPS"

Xoá các file ảnh không được sử dụng:

Anh Kumar có một đoạn script rất tiện lợi để tự động xoá những file ảnh không được reference bởi code trong rails app của bạn. Tuy nhiên, nên cẩn thận kiểm tra lại trước khi commit lên master:

images = Dir.glob('app/assets/images/**/*')
unused_images = []
images.each do |image|
  unless File.directory?(image)
    puts "Checking #{image}..."
    result = `grep -nr #{File.basename(image)}* app/ `
    if result.empty?
      unused_images << image
      `rm -rf #{image}`
    end
  end
end

Kết

Chúc các bạn xoá code vui vẻ :smile: