[Rails5]rubocop이란?

3374 단어 RuboCop루비Rails
Rails의 공부로서 gem 주위를 만져 보는 기획입니다.
이번에는 ...

rubocop

시도해 보겠습니다.

무슨 젬이야?



Ruby 코드를 구문 분석하고,
코딩 규칙을 따르는지 확인하는 gem.



말할 필요도 없이 모형은 RoboCop.

Role models are important.
- Officer Alex J. Murphy/RoboCop

검증 환경



다음 환경에서 실시했습니다.
[client]
・MacOS Mojave(10.14.2)
・Vagrant 2.2.2
・VBoxManage 6.0.0

[virtual]
・CentOS 7.6
・Rails 5.2.2
・ruby 2.3.1

참고까지.

rubocop 소개



1.gem 설치

사전에 Rails 공부용으로 작성한 프로젝트로 진행합니다.
각 MVC는 적당히 게시판 앱을 상정하여 Posts 컨트롤러 등을 생성 완료되었습니다.
(index, show, edit의 빈 페이지를 볼 수있는 정도)
$ rails g model post
$ rails g controller posts index show edit

그 전제하에 Gemfile에 다음을 추가한다.

Gemfile
# rubocop
gem 'rubocop', require: false

추가하면 설치.
$ bundle install

-----------
Fetching rubocop 0.63.0
Installing rubocop 0.63.0
-----------
→無事に完了。

2.rubocop 사용

이것으로 사용할 수 있게 되었으므로, 조속히 사용해 봅시다.
시도에 posts_controller.rb를 대상으로.
$ bundle exec rubocop -R app/controllers/posts_controller.rb

그렇다면 실행하면
Inspecting 1 file
C

Offenses:

app/controllers/posts_controller.rb:1:1: C: Style/Documentation: Missing top-level class documentation comment.
class PostsController < ApplicationController
^^^^^
app/controllers/posts_controller.rb:1:1: C: Style/FrozenStringLiteralComment: Missing magic comment # frozen_string_literal: true.
class PostsController < ApplicationController
^
app/controllers/posts_controller.rb:14:9: C: Layout/AlignParameters: Align the parameters of a method call if they span more than one line.
        filename: "投稿情報.csv"
        ^^^^^^^^^^^^^^^^^^^^
(省略)

1 file inspected, 21 offenses detected

엄청 말했다.

커맨드 두드린 직후의 "C"는 발견된 위반 중에서 가장 심각한 것의 머리글자인 것 같습니다.
(Convention, Warning, Error, Fatal 순으로 심각)
즉, 상당히 많이 지적되었지만 가장 경미한 위반인 것 같다.

또, 커멘드시에 -R 옵션을 붙이고 있습니다만,
이것을 붙이면 Rails에 특화된 실행이 되는 것 같습니다.

그 주변의 참고는 official manual

보충



루트 바로 아래에 .rubocop.yml를 설치하면 독자적으로 규약을 설정할 수 있다는 것.
다만, 디폴트의 항목의 오버라이드(override)가 되기 때문에 주의.
※기본 코딩 규약은 Ruby style guide

또 이용예에서는, 각 프로젝트 및 팀마다 정한 규약에서의 조정이나,vendor/bundle 이나 db/schema.rb 를 대상외로 하는 설정을 실시하는 등이 있는 것 같습니다.

소감



코딩 량이 많아지면,
그 팀에서 마련한 코딩 규약을 잊고,
손 구세 같은 느낌으로 자신의 쓰는 법을 버리는 것은 있다고 생각합니다.

그렇다고 소스 리뷰에서 한 줄씩
「여기, 규약 위반이야!!」
뭐라고 하면 힘들군요.

그 근처는 전부 rubocop씨에게 맡겨 버리면,
시간이 짧아도 편해질 것 같습니다!

결론



뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!

좋은 웹페이지 즐겨찾기