최근에 루비 프로그래밍 스타일 가이드 관련해서 글을 하나 작성했었는데요, 이어서 그떄 잠깐 소개드렸던 rubocop을 이용해서 코드를 교정하는 과정에 대해 잠깐 이야기할까 합니다.
(https://www.hahwul.com/2018/07/awesome-awesome-ruby-programming-style.html)

auto correct in rubocop 

지난번에 rubocop 사용 관련해서 지금 틈내서 개발중인 recon-raven 쪽 코드로 돌려봤는데요.. 어마어마한 양이 나왔습니다.

5 files inspected, 370 offenses detected



무려 370개나 문제가 있다고 하네요..

그래서 쉽게 고칠 수 있는 방법이 뭐 없을까 하다가 옵션을 보니깐 auto-correct 기능이 있었습니다.

#> rubocop -h | grep auto-correct
    -a, --auto-correct               Auto-correct offenses.
    -x, --fix-layout                 Run only layout cops, with auto-correct on.


오 어느정도 자동 수정이 가능하겠단 이야기군요, 물론 관련해서 rubocop쪽 github에 safe 버전으로도 만들어서 사용하자란 이야기도 있었습니다. 그만큼 코드 동작에 문제가 발생할 수 있는 부분이니 신중하게 잘 확인하셔야 할 것 같습니다.
아무튼 -a , --auto-correct 옵션으로 발견 사항 일부에 대해 자동 교정이 가능합니다. 그럼 바로 적용해봅시다.

#> rubocop -a
[....]
5 files inspected, 522 offenses detected, 473 offenses corrected

희안하게 탐지량이 늘긴했지만, 무려 473개나 수정해주었네요. 내용을 살펴보면 대충 연산자 사이 공백 추가, 주석 뒤 공백 추가 같은 부분들이라 코드 동작에는 지장 없을 것 같습니다.


이제 다시 rubocop으로 리체킹해보면..

#> rubocop

 $$$$$$c    $$\"\"\"\"  $$$        $$$,     $$$$$$ \"Y$c$$ cccc $$$$$$c     c$$$cc$$$cY$c.$$\"     $$\"\"\"\"   $$$ \"Y$c$$
                                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/func_print.rb:22:81: C: Metrics/LineLength: Line is too long. [114/80]
 888b \"88bo,888oo,__`88bo,__,o,\"888,_ _,88P888    Y88      888b \"88bo, 888   888,Y88P       888oo,__ 888    Y88
                                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/func_print.rb:23:81: C: Metrics/LineLength: Line is too long. [130/80]
 MMMM   \"W\" \"\"\"\"YUMMM \"YUMMMMMP\" \"YMMMMMP\" MMM     YM      MMMM   \"W\"  YMM   \"\"`  MP        \"\"\"\"YUMMMMMM     YM"
                                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

5 files inspected, 49 offenses detected


49개 남았네요, 남은것들 중 가능한 부분은 수정합시다!


Conclusion

그와중에 else if , elseif 이건 좀 의외네.. 보통 else if 를 많이 사용한다고 생각했는데.
if

else if

end
end

rubocop 기준으론 아래가 좋은 코드라고 하네요.

if

elseif

end
end

댓글 없음:

댓글 쓰기