[Rails5]rubocop이란?
이번에는 ...
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씨에게 맡겨 버리면,
시간이 짧아도 편해질 것 같습니다!
결론
뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!
Reference
이 문제에 관하여([Rails5]rubocop이란?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/betti/items/9fa4155756f1afcdb378
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ rails g model post
$ rails g controller posts index show edit
# rubocop
gem 'rubocop', require: false
$ bundle install
-----------
Fetching rubocop 0.63.0
Installing rubocop 0.63.0
-----------
→無事に完了。
$ 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
코딩 량이 많아지면,
그 팀에서 마련한 코딩 규약을 잊고,
손 구세 같은 느낌으로 자신의 쓰는 법을 버리는 것은 있다고 생각합니다.
그렇다고 소스 리뷰에서 한 줄씩
「여기, 규약 위반이야!!」
뭐라고 하면 힘들군요.
그 근처는 전부 rubocop씨에게 맡겨 버리면,
시간이 짧아도 편해질 것 같습니다!
결론
뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!
Reference
이 문제에 관하여([Rails5]rubocop이란?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/betti/items/9fa4155756f1afcdb378
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Rails5]rubocop이란?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/betti/items/9fa4155756f1afcdb378텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)