RuboCop is 무엇?

4870 단어 RuboCop루비Rails

RuboCop이란?



Ruby의 정적 코드 분석을 수행하는 gem입니다. 어렵게 들리지만, 요점은 RuboCop가 .rb 파일에 기술하고 있는 코드를 검사해, 여기의 코드는 너무 깁니다. 라든지, 들여쓰기 넣는 편이 좋다. 라든지 메소드 이름 바꾸자. 라든지를 커맨드 하나로 터미널에 토해 줍니다. (HTML, CSS 또는 그 안에 포함된 루비는 구문 분석하지 않습니다.)

다만, RuboCop의 경고 전부가 올바른 것은 아니고, 어느 쪽인가라고 하면 이러한 쪽이 좋다고 하는 것이 많기 때문에, 너무 엄격하지 않을까 생각하면 디폴트를 바꾸거나, 경고한다/하지 않는의 설정을 해 봐 제발. 그래서 프로젝트마다 토론하고 구분하여 사용하면 좋을까라고 생각합니다.

RuboCop의 기본



· 준비



Gmefile
group :development do
  gem 'rubocop', require: false
end
# or
$ gem install rubocop

· 관련 파일



.rubocop.yml
RuboCop의 설정 파일입니다. 대상이 되는 파일의 종류이거나, 체크하는 구문의 디폴트를 바꾸거나, 자신들의 코딩 스타일에 따른 현실적인 룰을 이 파일로 적용합니다. ( RuboCop 설정 알레콜레 에 자세하게 써 있으므로 참고해 보세요.)

.rubocop_todo.yml
너무 경고가 많을 때 $ rubocop --auto-gen-config를 실행하여 자동 생성되며 경고 내용을 모두이 파일로 일단 저장할 수 있습니다. 이후에는 퇴피된 경고는 무시됩니다. (git stash 같은 느낌?)

· 기본 명령



$ rubocop
# 解析して結果をターミナルに吐き出す。

$ rubocop --help
# ヘルプを参照できます。

$ rubocop --lint( または rubocop --rails )
# チェック規則は以下の4つに分類されますが --lint がLintのみチェック、 --rails がRailsのみチェック
# -------------------------------------------------------------------------
# 1 Style   (スタイルについて)
# 2 Lint    (誤りである可能性が高い部分やbad practiceを指摘する)
# 3 Metrics (クラスの行数や1行の文字数などに関して)
# 4 Rails   (Rails特有のcop)

$ rubocop --auto-gen-config 
# .rubocop_todo.ymlに警告を一旦退避する。
# .rubocop.ymlに "inherit_from: .rubocop_todo.yml" と書くのを忘れないでください。

$ rubocop --auto-correct 
# 直せる箇所を自動で修正してくれます。(最初は使わないで警告されたコードを眺めてみることをお勧めします。)

경고 내용



경고의 종류는 많이 있습니다만, Rubocop 치트 시트 에 확실히 정리하고 있습니다. 참고해 보세요.

수정의 흐름 ⓪~⑦



⓪ $ rubocop --auto-correct를 실행하여 자동으로 수정할 수있는 것은 받는다. 나머지 경고가 많으면 ①로. 경고가 그리 많지 않은 경우(10~20개라든지)는 ③과 ④를 반복한다.
(Rails의 코드 규칙을 배우는데 아주 좋은 교재라고 생각하기 때문에 처음에는 ⓪를 날리는 것이 좋습니다.)

① 경고가 많이 있다고 보기 힘들므로 $ ​​rubocop --auto-gen-config를 실행하고 .rubocop_todo.yml을 작성하고 거기에 모든 경고를 일단 옮긴다. (이것으로 $ rubocop를 실행해도 지금의 단계에서는 모든 경고는 무시됩니다.)

② .rubocop_todo.yml 내의 경고 중에서 맨 위의 경고를 코멘트 아웃한다. (댓글 아웃 한 경고 만 다시 RuboCop에 감지됩니다)

③ $ rubocop을 실행하여 경고를 수정한다.

④ 경고의 디폴트를 변경하거나 특정 파일을 향후 RuboCop에 경고하지 않으려는 경우는 .rubocop.yml에 설정을 쓴다.

⑤ 수정이 끝나면 .rubocop_todo.yml로 돌아가 코멘트 아웃 한 경고를 삭제한다.

⑥ .rubocop_todo.yml내의 모든 경고를 수정이 끝날 때까지 ②~⑤를 반복한다.

⑦ 테스트가 있는 경우는 테스트를 달린다.

RuboCop의 존재 항상 잊어버리는 문제



RuboCop은 편리하지만 항상 실행하는 것을 잊어 버리고 경고가 쌓여 버립니다.

나중에 대량의 경고를 한 번에 수정하는 것은 번거롭기 때문에 git commit 런타임에 자동으로 코딩을 확인하도록 합시다.
키마나카의 블로그 씨의 【Ruby on Rails】rubocop 과 pre-commit 를 이용해 git commit 시에 코딩 체크를 실시한다 에 자세한 방법이 쓰여져 있습니다.

마지막으로



RuboCop은, 일본어의 코멘트는 안 된다든가, 1행에 걸리는 문자가 꽤 짧거나라든지 일일이 엄격합니다만, 사랑이 있는 lint 툴입니다. 그래서 빨리 자신의 코딩 스타일을 확립하고 이상적인 .rubocop.yml을 만들어 갑시다. 다른 사람이 자신의 .rubocop.yml을 공개하고 있으므로 참고해보십시오. ( 내가 사용하고있는 .rubocop.yml · GitHub )

좋은 웹페이지 즐겨찾기