코드 리뷰 시스템 소개
TRANSCRIPT
![Page 1: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/1.jpg)
코드 리뷰 시스템 소개
![Page 2: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/2.jpg)
발표자 소개● 오픈소스를 수정해서 밥벌어 먹습니다.● 주로 임베디드 기기에서 사용되는 소프트웨어를 개발합니다.○ PC나 서버가 아닌 기기용 소프트웨어○ 아파트, 지하철 충전기, 광고 패널, 티켓 발권기, 셋탑박스, 교육용 로봇, 집 전화기, 휴대폰, 자동차, 기타 등등
● 제작년부터 코드리뷰 시스템을 써보게 되었습니다.
![Page 3: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/3.jpg)
안드로이드 커밋 통계
![Page 4: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/4.jpg)
정말로 구글러들은 외계인?
과연 그들은
고문당하고 있는 거신가?
![Page 5: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/5.jpg)
Guido Van Rossum● Creator of Python● 한때 구글러
○ 2005 - 2012● 지금은
Dropbox에 Drop 되었습니다.
![Page 6: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/6.jpg)
Guido할아부지의 첫번째 미션
Mondrian 이라는 코드 리뷰 시스템
을 만들었더랬죠.
![Page 7: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/7.jpg)
코드 리뷰 시스템
![Page 8: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/8.jpg)
코드 리뷰의 목적
It is intended to find and fix MISTACKES overlooked.
defined in Wikipedia
![Page 9: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/9.jpg)
코드 리뷰의 목적
Goal is COOPERATION, not fault-finding.
Guido van Rossum
![Page 10: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/10.jpg)
협력
코드 리뷰의 목적
![Page 11: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/11.jpg)
Cooperation
Fault-finding
![Page 12: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/12.jpg)
● 뭔가 좋은거 같긴 한데● 쓰이는데가 별로 없는 것 같애요.
![Page 13: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/13.jpg)
코드 리뷰 시스템을 도입못하는 이유 (1)
그게 뭐하는 거임?
![Page 14: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/14.jpg)
코드 리뷰 시스템을 도입못하는 이유 (2)
그걸 하느니 그 시간에 코드 한줄 더 짜겠심.
![Page 15: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/15.jpg)
코드 리뷰 시스템을 도입못하는 이유 (3)
내가 뭘 하는지도 모르겠는데, 남의 걸 어떻게 봐줌?
![Page 16: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/16.jpg)
Why?
귀찮아 죽겠는데 왜 저런걸 써라는 거지?
![Page 17: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/17.jpg)
모두가 원하는 상황
![Page 18: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/18.jpg)
하지만 현실은 시궁창.
![Page 19: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/19.jpg)
![Page 20: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/20.jpg)
코드 리뷰 시스템
![Page 21: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/21.jpg)
코드 리뷰 시스템
![Page 22: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/22.jpg)
코드 리뷰 도입시 얻을 수 있는 효과● 버그 개수 감소● 팀원의 트레이닝 도구로 활용● 코드 가독성 증가 및 품질 상승● 코드 세부 구현사항에 대한 기록 보존● 팀 역량 상향평준화● 디버깅 시간 및 프로젝트 수행 기간 단축
![Page 23: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/23.jpg)
놀라운 효과!!!
![Page 24: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/24.jpg)
놀라운 효과!!!!!!
![Page 25: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/25.jpg)
사실 코드리뷰는...● Pair Programming 의 일종.○ COOPERATION○ 하지만 실시간으로 여러명이 붙어서 작업할 필요가 없다.
○ 시간날 때 코드를 올리고, 시간날 때 리뷰하면 된다.
![Page 26: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/26.jpg)
코드 리뷰에 대한 오해● 코드 리뷰는 사람이 남아도는 프로젝트에만 적합한거 아닌가요?○ 사람 남아도는 프로젝트. 그런거 업따.○ 서로 다른 의견을 가진 사람이 리뷰할수 있기만 하면 됨.
○ 2명만 있어도 할 수 있다.
![Page 27: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/27.jpg)
코드 리뷰에 대한 오해● 코드 리뷰는 초천재 미소년/미소녀만 할 수 있는거 아닌가요?○ 지금 당신이 바로 초천재 미소년/미소녀!!○ 못 알아보는 부분이라도 마킹해보자.○ 앞에서도 말했지만 코드리뷰의 목적은 잘못한 부분을 찾는 것이 아니라 COOPERATION.
![Page 28: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/28.jpg)
코드 리뷰를 하는 법● 어렵지 않아요.
○ Re(다시, 다르게)○ View(살펴본다)
![Page 29: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/29.jpg)
사실 여러분은 코드 리뷰를 이미 하고 있습니다.● 버그 잡을 때
○ 버그가 있다고 생각하지 않았을 때 코드를 바라보는 관점
○ 버그가 있다고 생각하고 코드를 바라보는 관점● 사실 관점을 다르게 볼 수 있다면 혼자서도 코드 리뷰가 가능
● 하지만 다중인격의 소유자가 아닌 이상, 2명이상 같이 하는게 좋습니다.
![Page 30: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/30.jpg)
코드 리뷰에 대한 오해● 후다닥 처리해야 하는데 리뷰하면 시간만 까먹는거 아네요?○ 그러다가 된통 얻어맏고 야근야근 열매 섭취.○ 코드 리뷰에 투자하는 시간은 결코 배신하지 않습니다.
![Page 31: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/31.jpg)
Gerrit
![Page 32: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/32.jpg)
잠시 살펴보는 Gerrit의 족보
![Page 33: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/33.jpg)
Mondrian● Written by Guido
van Rossum● Written with Python● Announced in 2006● Integrated with
Perforce● Hosted and Used at
Google Internal
![Page 34: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/34.jpg)
RietVeld● Written by Guido van
Rossum● Written with Python● Announced in 2008● Integrated with
Subversion● Host on Google Ap
Engine● Used by Chrome
Project
![Page 35: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/35.jpg)
Gerrit● Gerrit (2008 - 2012)
○ fork from Rietveld○ add Access Control
List feature○ Written by Sean O.
Pearce● Gerrit2 (2008 - )
○ Rewritten Gerrit with JavaEE
○ Written by Sean O. Pearce
○ Used by Android Project
![Page 36: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/36.jpg)
Gerrit의 특징● 여러가지 환경에서 운영 가능
○ jvm이 설치되어 있으면 PC에서도 운영 가능○ 표준 servlet container 지원
● 여러가지 인증 방식 지원○ http/ldap/openid
● 여러가지 database 지원○ mysql/pgsql/h2
![Page 37: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/37.jpg)
Gerrit의 기능● 소스 리뷰 게시판● Access Control List● Git 저장소
![Page 38: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/38.jpg)
Gerrit의 인터페이스● for Human
○ WEB● for External Integration
○ ssh■ git■ gerrit
○ Rest API
![Page 39: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/39.jpg)
DVCS(Hg, Git) Workflow
Remote Repository
User1's Local
Repository
fetch
pushpull request
commitmergerebase
User2's Local
Repository
fetch
pushpull request
commitmergerebase
![Page 40: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/40.jpg)
Gerrit Workflow
Remote Git RepositoryUser1's
Local Git Repository
fetch
push
commitmergerebase
User2's Local Git
Repository
fetch
push
commitmergerebase Pending
Commit
Merge
Gerrit
![Page 41: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/41.jpg)
Gerrit Detailed Workflowpush commit torefs/for/branch
gerrit notifyreviewers& verifiers
Onlinecode quality
review
IPReview Build
Comments& Votes
Run testcases
improves the change
merge the changeinto master
abandonsthe change
change approved
change not approved
flow from http://goo.gl/Kwcxo
![Page 42: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/42.jpg)
Gerrit + Eclipse● Mylyn Gerrit Connector● Mylyn Reviews
![Page 43: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/43.jpg)
DEMO
![Page 44: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/44.jpg)
What's Next?● Search Slide about Gerrit in SlideShare!
○ How Git and Gerrit make you more productive?● Leaning git branch● Why Git is Better then Mercurial?● ProGit● Repo 써보기● Eclipse Mylyn Reviews
![Page 45: 코드 리뷰 시스템 소개](https://reader033.vdocuments.net/reader033/viewer/2022042518/55a699661a28ab75668b456c/html5/thumbnails/45.jpg)
● http://goo.gl/Z3mWx