Ruby linter và các linter plugin cho atom và sublimetext

Ruby linter

Linter là công cụ giúp kiểm tra các lỗi về convention, security, code smelling, code covering

Thường thời gian đầu thì chúng ta hay bị linters bắt lỗi rất nhiều, nhưng dần về sau, khi mọi người quen với cách code theo đúng convention rồi thì linter rất ít khi có dịp được lên tiếng :v

Các linter thông dụng

rubocop

https://github.com/bbatsov/rubocop

Nhắc đến ruby linter thì cái tên đầu tiên được xướng lên chính là rubocop.

rubocop là một tool khá toàn diện trong việc checking ruby coding convention.

Cho đoạn code mẫu:

Và cho rubocop làm việc:

Nó kiểm tra khá kỹ và report rất chi tiết, đầy đủ.

railsbestpractices

https://github.com/railsbp/rails_best_practices

Thằng này thì đúng như cái tên là chuyên về các best pratice cho rails hơn là coding convention:

Vd lấy từ wiki:

Before:

After:

brakeman

https://github.com/presidentbeef/brakeman
Thằng này chuyên về kiểm tra các issue về bảo mật (SQJ Injection chẳng hạn).

More…

còn nhiều công cụ khác, bạn có thể xem thêm và có cho mình sự lựa chọn hợp lý. Riêng mình, mình nghĩ rubocop + brakeman là đủ.

Tích hợp vào editors

Việc chạy các tool này trên terminal đôi khi cũng gây ra nhiều bất tiện:
– Phải chạy thủ công bằng dòng lệnh
– Việc kiểm tra không được thường xuyên, dẫn đến
– Mỗi lần chạy thì sẽ hiện ra 1 lô 1 lốc các lỗi, sửa mỏi tay

Chính vì vậy, các plugin đã ra đời khiến cuộc sống của lập trình viên được thăng hoa hơn.

Với ruby dev, hầu hết mọi người đều dùng 2 editor chính là atomsublime.

Atom

Để cài đặt các plugin cho atom, có 3 cách:
– dùng trang setting của atom
– cài thông qua npm
– cài thông qua atom console

Trong bài này mình sẽ giới thiệu cách thứ nhất, các cách còn lại các bạn có thể tìm hiểu thêm 🙂

Để cài đặt plugin, vào Edit -> Preferences (hoặc Ctrl + , với Linux hoặc Cmd + , với OSX) chọn mục + Install.
atom_install_setting

Mục Packages sẽ liệt kê các plugin đã cài đặt, nơi đó mình cũng có thể cấu hình cho từng plugin.

Linter

https://atom.io/packages/linter

Đây là package cơ bản cho các linter package khác.

Vào setting, tìm tên linter (của tác giả steelbrain) và cài đặt.

linter-rubocop

https://atom.io/packages/linter-rubocop

Plugin này thực hiện việc chạy lệnh rubocop mỗi lần bạn lưu file (Ctrl + S), đồng thời thông báo lỗi ngay trên Editor luôn.

Quay trở lại với đoạn code mẫu ban đầu, linter-rubocop sẽ show ra 3 lỗi, ta di chuyển con trỏ chuột vào đoạn được đánh dấu để đọc thông tin về lỗi:
rubocop1

rubocop2

rubocop3

Cài đặt – cấu hình

Vào setting, tìm tên linter-rubocop (của tác giả AtomLinter) và cài đặt.

Sau khi cài đặt, bạn vào phần cấu hình cho linter-rubocop và điền vào đó đường dẫn đến file thực thi rubocop của bạn.
Để tìm được đường dẫn này, bạn chạy lệnh sau trong terminal:

setting_rubocop
Sau khi cấu hình, có thể bạn sẽ phải khởi động lại atom để nó có hiệu lực.

Nếu tinh ý, bạn sẽ thấy cùng 1 đoạn code, nhưng rubocop CLI bắt được 4 lỗi, còn linter-rubocop plugin chỉ bắt được 3, nên ta cần thêm 1 sự bổ sung.

linter-ruby

https://atom.io/packages/linter-ruby
linter_ruby
Đây là sự bổ sung cho linter-rubocop, việc cài đặt, cấu hình tương tự như ở trên kia:

SublimeText

Trong bài viết này, mình dùng SublimeText3.

Để cài đặt 1 plugin, ta sẽ sử dụng Package Control bạn vào menu Tool -> Command Palette hoặc tổ hợp phím Ctrl + Shift + P, nhập vào install sẽ thấy dòng Package Control: Install Package, chọn nó và Enter. Chờ 1 lúc để nó cập nhật các plugin.

Nếu bạn không thấy dòng Package Control: Install Package, tức là máy bạn chưa cài Package Control, để cài nó, bạn bấm tổ hợp phím Ctrl + ` và nhập vào nội dung sau:

Enter để cài đặt.

SublimeLinter

https://github.com/SublimeLinter/SublimeLinter3

Vào Install Package từ Command Palette, nhập SublimeLinter và cài đặt.

Lưu : để SublimeLinter chạy được thì rubocop phải được cài đặt với quyền sudo.

Mỗi lần lưu file, SublimeLinter sẽ check và hiển thị bảng danh sách các lỗi cần sửa.

Lập trình và hơn thế nữa

Spread the love
  • 1
  •  
  •  
  •  
  •  
    1
    Share

Leave a Reply

Be the First to Comment!

avatar
  Subscribe  
Notify of