1. 개요
리뷰보드에 대한 일반적인 설명과 간략한 사용법을 정리하여 프로젝트나 프로덕트 개발시의 비대면 코드리뷰를 돕고자 정리 하였습니다.
2. Review Board
Review Board 는 web 환경을 이용한 code review 툴 로서 다양한 Repository를 지원하는 툴입니다. 소스 관리에 가장 많이 사용되는 SVN(subversion)도 지원이 됩니다. 코드 리뷰가 무엇인지 그리고 리뷰보드가 어떤 것인지는 하기의 링크를 참조 하시기 바랍니다.
- Code Review 관련 참조
- Review Board 홈페이지
2.1 Review Board 를 사용한 Code Review Cycle
- Review Request 생성
- Reviewer 지정 및 Publish
- Reviewer는 해당 Request에 대한 Review 진행
- Review 및 Comment 전달
- Submiter는 Review 및 Comment 를 참조하여 수정사항 반영 및 Request를 업데이트
- Reviewer는 필요한 경우 추가 Comment를 하고 없는 경우 ship it
- Submiter는 ship it counter가 충분한 경우 Submit을 하여 해당 Code(Document)에 대한 Review 종료
3. Review Board의 사용법
관리자 모드로 설정된 사용자를 기준으로 하여 설명 하겠습니다. 이하 설명의 편의성을 위하여 존대말과 반말들이 혼용 될수 있으니 양해 부탁드립니다.
3.1 등록
- Username : 사용자의 이름 (로그인 시 사용)
- Password : 사용자의 암호 (로그인 시 사용)
- E-mail address : 리뷰에 대한 notify를 전달 받는데 사용되는 이메일
- First name , Last name : 사용자의 이름
- My Dashboard : 현재 보이는 초기 화면으로 필요한 로그인한 사용자와 관련된 리뷰 정보들을 모아서 보여준다.
- New Review Request : 나에게 새로 할당된 리뷰를 모아서 보여준다.
- All Review Request : 리뷰 보드에 등록되고 진행 중 혹은 진행 완료된 리뷰들을 보거나 검색 할 수 있다.
- Group : 리뷰 그룹의 정보를 볼 수 있다.
- Submitters : 현재 Review Board를 사용하는 사용자의 정보를 모아서 볼 수 있다.
- My account : 로그인한 계정의 정보확인 및 수정
- Admin : 관리자 메뉴로 접근 ( 관리자 권한이 존재하는 경우 보임)
- Log out : 일반적인 로그아웃
- Support : 리뷰 보드의 홈페이지로 연결되어 공식 문서 확인 및 지원을 요청 할 수 있음
- Starred Reviews : 즐겨찾기한 리뷰 목록 보기
- Outgoing Reviews : 내가 생성하여 다른 리뷰어에게 할당한 리뷰 목록 보기
- Incomming Reviews : 나에게 리뷰를 요청한 목록, 그룹으로 할당 되거나, 직접 나에게 할당 된(To Me) 목록
- All My Requests : Outgoing + Incomming Review
3.3 리뷰 요청 작성
- Repository : 리뷰 대상 코드가 저장된 Repository를 선택한다. Repository는 Admin에서 설정 가능 하다.
- Base Directory : 리뷰 대상 코드가 있는 SVN에서의 절대 경로 해당 소스가 있는 local directory로 이동 후
> svn info
위의 command를 통하여 정보 확인 Repository Root를 제외한 나머지 경로가 Base
Directory이다.
ex) /SRC/Client/trunk/myproject/src/com/pointi/testprj
Directory이다.
ex) /SRC/Client/trunk/myproject/src/com/pointi/testprj
- Diff : Diff 생성 방법은 다음과 같다.
svn diff [대상파일명] 을 사용하면 해당 파일과 SVN의 HEAD버전과의 차이점을
화면에 보여 준다. 해당 내용을 복사하여 저장하거나
> svn diff [대상파일명] > current_version.diff
위와 같이 io redirection을 사용하여 파일로 기록 한다.
SVN diff 관련한 상세설명은 다음의 링크를 참조
- http://jujubong.tistory.com/113 의 6) svn diff가 좀 직관적으로 알 수 있게 정리 되어 있다.
- Create Review Request : 신규 Code 리뷰를 생성한다.
- Publish : 해당 리뷰를 공개 한다. Publish를 하기 전까지는 Reviewer들에게 리뷰가 할당되지 않는다. 즉 해당 리뷰는 작성 중(Draft) 상태로 남게 된다.
- Discard Review Request : 작성 중인 리뷰를 버린다.
- Summary : 해당 리뷰의 제목을 입력한다. Issue Tracker를 통하여 할당된 업무를 통한 작업인 경우 이슈 트랙커의 link 또는 번호를 적는 것도 좋을 것 같다.
- Reviewers : 해당 Code를 실제로 리뷰 할 리뷰어를 지정한다.
- Group : 미리 생성된 그룹에 할당한다.
- People : 특정인을 지정하여 할당한다. 복수도 가능하다.
(통상적으로 2~4명이 적당하다 되도록이면 4명을 넘지 않도록 한다.)
- Description : 해당 코드의 상세내역을 기재 한다. 리뷰의 목적은 코드의 결함 발견도 있겠지만 코드의 공유의 목적도 있기 때문에 대한 Description 에 리뷰 대상 코드에 대한 상세한 설명을 기재 하는 것이 좋다. 그렇지 않으면 리뷰 하는 사람도 좋은 리뷰를 진행 할 수 없기 때문에 아니면 Code내에 Comment를 잘 활용하는 것도 방법 중 하나일 듯 하다. 목적은 수정한 코드에 대하여 정확하게 설명하는 것이다.
3.3 Code Review 진행
- Close : 해당 리뷰를 종료 하기 위한 메뉴 제공 (Submmiter에게 제공된다. 관리자 권한이기 때문에 노출됨)
- Submmited : 해당 리뷰가 완료됨
- Discarded : 해당 리뷰를 버림 (버린 이력 및 버린 시점 까지의 리뷰는 이력으로 남아서 확인 가능하다.)
- Delete Permanetly : 해당 리뷰를 완전 삭제 함
- Update : 리뷰의 대상인 코드 및 소스 파일을 추가하여 리뷰 대상을 수정함
- Update diff : 리뷰를 기준으로 소스를 다시 수정 후 해당 소스의 diff를 다시 업데이트하여 리뷰어에게 전달함
- Add file : 리뷰에 필요한 파일을 추가함
- Download diff : 업로드된 diff파일을 내려받음
- Review : 해당 리뷰의 전체 의견을 생성 할 수 있는 화면을 제공함
- Ship it : 체크하는 경우 Publish Review 할 때에 자동으로 Ship it! 설정
- Publish Review : 작성한 리뷰 내용을 공개 한다.
- Discard Review : 작성한 리뷰 내용을 버린다.
- Cancel : 이전 화면으로 돌아가기
- Save : 작성 내용을 임시 저장 한다. Submmiter 및 다른 사람들에게 공개 되지 않는다.
- Ship it! : 리뷰어가 더 이상 수정이 필요 없는 경우 Ship it을 통하여 통과 함. (Submmiter는 특정 수 이상의 ship it! 이 발생한 경우 해당 코드를 적용하는 것이 좋을 것 같다. )
- View Diff: 코드의 수정된 부분에 대하여 Display 하며 코드에 line by line으로 Comment를 생성할 수 있음 생성된 Comment를 참조하여 Submmiter는 코드 및 로직을 수정하거나 해당 comment에 reply 함으로서 Reviewer에게 코드의 목적을 설명한다. 수정된 내용을 화명에 보여 준다. 초록은 추가 된 부분 붉은 색은 삭제된 부분. 라인(숫자가 존재하는 부분) 을 클릭하거나 Drag하면 해당 부분에 Comment를 추가 할 수 있고 해당 Comment는 Review의 (Open an issue 체크 시)Issue로 관리 할 수 있다. Issue 로 생성된 Comment는 Submmiter 에 위와 같이 보여지며 수정을 하거나 Drop을 선택 할 수 있다. 해당 선택을 하기 이전에 add comment는 해당 comment 에 대하여 Submmiter가 설명을 추가 할 경우 사용한다.
Reviewer가 리뷰를 완료 하고 Ship it! 클릭하는 경우 해당 Count가 증가한다.
ship it!이 일정 수 이상 된다면 해당 reviewed를 closed->submmit을 통하여 리뷰를 종료 하도록 한다. 해당 활동은 강제가 아니므로 submmited의 시점은 각 Submmiter가 판단한다.
3.4 Admin
우측 상단의 Admin을 통하여 관리자 화면을 접근 하는 경우 아래와 같은 화면을 볼수 있다.
다른 부분은 특별히 설정에 대하여 설명할 부분이나 사용할 부분이 없어서
- Name: 사용자에게 보여질 이름
- Hosting service : 외부의 알려진 호스팅을 사용하는 경우 선택
- Repository type : SCM 의 종류를 선택한다. 개발 3팀의 경우 SVN을 사용하므로 “subversion”을 선택 해야 함
- Path : 해당 Repository의 경로
- Username, Password 해당 Repository를 access 할 수 있는 계정 정보
위의 정보들을 입력 후 Save 버튼을 선택하면 Repository가 생성되며 이후 해당 Repository에서 수정된 Code에 대한 리뷰를 진행 할 수 있다.
5. 맺음 - 작성후기(?)
Code review를 같이 모여서 하기 보다 하루에 조금씩의 시간을 들여서 하는 편이 효율 적일 것 같아서 on-line 툴을 선택 하였습니다.
강제로 시켜서 하기 보다 자신의 코드에 대한 안전장치(?)라고 생각하여 자발적으로 적극 적으로 활용하면 좋을 것 같습니다.
Reviewer는 가급적이면 24시간 내에 리뷰를 한다. 등의 내부적인 룰이 있으면 더욱 원활히 운영 될 수 있을것 같습니다.
Submmiter는 리뷰 요청 시 상세히 “어떤 부분을 봐주었으면 한다.” 라고 상세히 요청 하면 좋을 것 같습니다.
위와 같이 하기 위하여서는 작은 단위로 리뷰를 생성하는 것이 좀더 원활히 운영 될것 같습니다.
코드의 모두 상세히 보기는 Reviewer에게 너무나 부담이 되는 부분 입니다. 물론 동작에 대한 검증을 위하여서는 전체를 볼 수 밖에 없겠지만 설명을 좀 잘 한다면 쉽게 볼 수 있을 것 같습니다.
코드리뷰는 결함이나 문제점만을 찾는 행위가 아닙니다. 해당 코드를 읽고 공유하며 좀 더 간결하고 좋은 코드를 작성하기 위한 절차 입니다.
다시한번 이글의 작성의 계기가 된 아래의 슬라이드를 꼭 한번 읽어 보시길 바라며 본 글이 코드리뷰를 도입함에 도움이 되었길 바랍니다.
추가로 오류사항이나 수정해야 할사항은 jaewon@pointi.com 으로 전달해주세요
댓글 없음:
댓글 쓰기