코드 리뷰 시스템 소개

45
코드 리뷰 시스템 소개

Upload: young-ho-cha

Post on 16-Jul-2015

389 views

Category:

Software


4 download

TRANSCRIPT

Page 1: 코드 리뷰 시스템 소개

코드 리뷰 시스템 소개

Page 2: 코드 리뷰 시스템 소개

발표자 소개● 오픈소스를 수정해서 밥벌어 먹습니다.● 주로 임베디드 기기에서 사용되는 소프트웨어를 개발합니다.○ PC나 서버가 아닌 기기용 소프트웨어○ 아파트, 지하철 충전기, 광고 패널, 티켓 발권기, 셋탑박스, 교육용 로봇, 집 전화기, 휴대폰, 자동차, 기타 등등

● 제작년부터 코드리뷰 시스템을 써보게 되었습니다.

Page 3: 코드 리뷰 시스템 소개

안드로이드 커밋 통계

Page 4: 코드 리뷰 시스템 소개

정말로 구글러들은 외계인?

과연 그들은

고문당하고 있는 거신가?

Page 5: 코드 리뷰 시스템 소개

Guido Van Rossum● Creator of Python● 한때 구글러

○ 2005 - 2012● 지금은

Dropbox에 Drop 되었습니다.

Page 6: 코드 리뷰 시스템 소개

Guido할아부지의 첫번째 미션

Mondrian 이라는 코드 리뷰 시스템

을 만들었더랬죠.

Page 7: 코드 리뷰 시스템 소개

코드 리뷰 시스템

Page 8: 코드 리뷰 시스템 소개

코드 리뷰의 목적

It is intended to find and fix MISTACKES overlooked.

defined in Wikipedia

Page 9: 코드 리뷰 시스템 소개

코드 리뷰의 목적

Goal is COOPERATION, not fault-finding.

Guido van Rossum

Page 10: 코드 리뷰 시스템 소개

협력

코드 리뷰의 목적

Page 11: 코드 리뷰 시스템 소개

Cooperation

Fault-finding

Page 12: 코드 리뷰 시스템 소개

● 뭔가 좋은거 같긴 한데● 쓰이는데가 별로 없는 것 같애요.

Page 13: 코드 리뷰 시스템 소개

코드 리뷰 시스템을 도입못하는 이유 (1)

그게 뭐하는 거임?

Page 14: 코드 리뷰 시스템 소개

코드 리뷰 시스템을 도입못하는 이유 (2)

그걸 하느니 그 시간에 코드 한줄 더 짜겠심.

Page 15: 코드 리뷰 시스템 소개

코드 리뷰 시스템을 도입못하는 이유 (3)

내가 뭘 하는지도 모르겠는데, 남의 걸 어떻게 봐줌?

Page 16: 코드 리뷰 시스템 소개

Why?

귀찮아 죽겠는데 왜 저런걸 써라는 거지?

Page 17: 코드 리뷰 시스템 소개

모두가 원하는 상황

Page 18: 코드 리뷰 시스템 소개

하지만 현실은 시궁창.

Page 19: 코드 리뷰 시스템 소개
Page 20: 코드 리뷰 시스템 소개

코드 리뷰 시스템

Page 21: 코드 리뷰 시스템 소개

코드 리뷰 시스템

Page 22: 코드 리뷰 시스템 소개

코드 리뷰 도입시 얻을 수 있는 효과● 버그 개수 감소● 팀원의 트레이닝 도구로 활용● 코드 가독성 증가 및 품질 상승● 코드 세부 구현사항에 대한 기록 보존● 팀 역량 상향평준화● 디버깅 시간 및 프로젝트 수행 기간 단축

Page 23: 코드 리뷰 시스템 소개

놀라운 효과!!!

Page 24: 코드 리뷰 시스템 소개

놀라운 효과!!!!!!

Page 25: 코드 리뷰 시스템 소개

사실 코드리뷰는...● Pair Programming 의 일종.○ COOPERATION○ 하지만 실시간으로 여러명이 붙어서 작업할 필요가 없다.

○ 시간날 때 코드를 올리고, 시간날 때 리뷰하면 된다.

Page 26: 코드 리뷰 시스템 소개

코드 리뷰에 대한 오해● 코드 리뷰는 사람이 남아도는 프로젝트에만 적합한거 아닌가요?○ 사람 남아도는 프로젝트. 그런거 업따.○ 서로 다른 의견을 가진 사람이 리뷰할수 있기만 하면 됨.

○ 2명만 있어도 할 수 있다.

Page 27: 코드 리뷰 시스템 소개

코드 리뷰에 대한 오해● 코드 리뷰는 초천재 미소년/미소녀만 할 수 있는거 아닌가요?○ 지금 당신이 바로 초천재 미소년/미소녀!!○ 못 알아보는 부분이라도 마킹해보자.○ 앞에서도 말했지만 코드리뷰의 목적은 잘못한 부분을 찾는 것이 아니라 COOPERATION.

Page 28: 코드 리뷰 시스템 소개

코드 리뷰를 하는 법● 어렵지 않아요.

○ Re(다시, 다르게)○ View(살펴본다)

Page 29: 코드 리뷰 시스템 소개

사실 여러분은 코드 리뷰를 이미 하고 있습니다.● 버그 잡을 때

○ 버그가 있다고 생각하지 않았을 때 코드를 바라보는 관점

○ 버그가 있다고 생각하고 코드를 바라보는 관점● 사실 관점을 다르게 볼 수 있다면 혼자서도 코드 리뷰가 가능

● 하지만 다중인격의 소유자가 아닌 이상, 2명이상 같이 하는게 좋습니다.

Page 30: 코드 리뷰 시스템 소개

코드 리뷰에 대한 오해● 후다닥 처리해야 하는데 리뷰하면 시간만 까먹는거 아네요?○ 그러다가 된통 얻어맏고 야근야근 열매 섭취.○ 코드 리뷰에 투자하는 시간은 결코 배신하지 않습니다.

Page 31: 코드 리뷰 시스템 소개

Gerrit

Page 32: 코드 리뷰 시스템 소개

잠시 살펴보는 Gerrit의 족보

Page 33: 코드 리뷰 시스템 소개

Mondrian● Written by Guido

van Rossum● Written with Python● Announced in 2006● Integrated with

Perforce● Hosted and Used at

Google Internal

Page 34: 코드 리뷰 시스템 소개

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: 코드 리뷰 시스템 소개

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: 코드 리뷰 시스템 소개

Gerrit의 특징● 여러가지 환경에서 운영 가능

○ jvm이 설치되어 있으면 PC에서도 운영 가능○ 표준 servlet container 지원

● 여러가지 인증 방식 지원○ http/ldap/openid

● 여러가지 database 지원○ mysql/pgsql/h2

Page 37: 코드 리뷰 시스템 소개

Gerrit의 기능● 소스 리뷰 게시판● Access Control List● Git 저장소

Page 38: 코드 리뷰 시스템 소개

Gerrit의 인터페이스● for Human

○ WEB● for External Integration

○ ssh■ git■ gerrit

○ Rest API

Page 39: 코드 리뷰 시스템 소개

DVCS(Hg, Git) Workflow

Remote Repository

User1's Local

Repository

fetch

pushpull request

commitmergerebase

User2's Local

Repository

fetch

pushpull request

commitmergerebase

Page 40: 코드 리뷰 시스템 소개

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: 코드 리뷰 시스템 소개

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: 코드 리뷰 시스템 소개

Gerrit + Eclipse● Mylyn Gerrit Connector● Mylyn Reviews

Page 43: 코드 리뷰 시스템 소개

DEMO

Page 45: 코드 리뷰 시스템 소개

● http://goo.gl/Z3mWx