최근에 루비 프로그래밍 스타일 가이드 관련해서 글을 하나 작성했었는데요, 이어서 그떄 잠깐 소개드렸던 rubocop을 이용해서 코드를 교정하는 과정에 대해 잠깐 이야기할까 합니다.
(https://www.hahwul.com/2018/07/awesome-awesome-ruby-programming-style.html)
auto correct in rubocop
지난번에 rubocop 사용 관련해서 지금 틈내서 개발중인 recon-raven 쪽 코드로 돌려봤는데요.. 어마어마한 양이 나왔습니다.
1
|
5 files inspected, 370 offenses detected
|

무려 370개나 문제가 있다고 하네요..
그래서 쉽게 고칠 수 있는 방법이 뭐 없을까 하다가 옵션을 보니깐 auto-correct 기능이 있었습니다.
1
2
3
|
#> 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 옵션으로 발견 사항 일부에 대해 자동 교정이 가능합니다. 그럼 바로 적용해봅시다.
1
2
3
|
#> rubocop -a
[....]
5 files inspected, 522 offenses detected, 473 offenses corrected
|
희안하게 탐지량이 늘긴했지만, 무려 473개나 수정해주었네요. 내용을 살펴보면 대충 연산자 사이 공백 추가, 주석 뒤 공백 추가 같은 부분들이라 코드 동작에는 지장 없을 것 같습니다.

이제 다시 rubocop으로 리체킹해보면..
1
2
3
4
5
6
7
8
9
10
11
12
|
#> 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 를 많이 사용한다고 생각했는데.
1
2
3
4
5
6
|
if
else if
end
end
|
rubocop 기준으론 아래가 좋은 코드라고 하네요.
1
2
3
4
5
6
|
if
elseif
end
end
|