Upload
ongameserver
View
7.981
Download
6
Embed Size (px)
Citation preview
코드 리뷰 시스템의 도입
NCsoft
임영기
주체 : 온라인 서버 개발자 모임 후원 : 넷텐션
코드리뷰란
• 다른 개발자에게 코드 검토를 요청
• 실수를 발견하려는 목적
• 코드 퀄리티 향상
• 개발자의 스킬 향상
시스템의 장점
• 비동기
• 편하게 묻고
• 알려주는 사람도 편한 시간을 사용
• 인정 사정 없는 지적질
• 코드 작성 할 때 좀 더 신경쓰게 됨
제품들
• Code Collaborator
• Crucible
• Review Board
• Code Striker
• Malevich
• Mondrian
Code Collaborator
• 유료
• 다양한 기능을 지원(VS addin 등)
• Pre-Review(저장소에 commit 없이 리뷰)에 강점
• 상대적으로 고가
Crucible
• 유료
• 최소한의 기능만 지원
• Pre-Review 불편(소스 저장소에서 patch파일을 만들어서 올려야 함)
• 상대적으로 저가
• 설치가 간단하고 쉬운 인터페이스
• 고객 서포트 좋음
무료 제품들
• Review Board
• Code Striker
• Malevich
• Mondrian
Crucible을 이용한 리뷰 프로세스
• 리뷰 올리기
• 리뷰어 검토
• 코멘트
• Complete
• Summarize
• Close
Review 생성
Review 리소스 선택
Commit 목록에서 선택
새로운 소스 추가
기존 소스 삭제
코멘트 달기
중요도 선택
Review 완료(Reviewer)
Review 완료(Review 작성자)
Review 닫기
Pre-Review
• 소스 저장소에 올리기 전 리뷰
• 소스 저장소의 기능을 이용해 Patch파일 생성
p4 diff –dcu100 > patch.txt
• Patch 파일을 업로드
Pre-Review(Patch파일 upload)
REST API
• 유저 목록
• 리뷰 목록
• 리뷰 상세 정보
• 그룹 목록 및 상세 정보
• 리뷰 혹은 유저의 일괄 처리
• 정보를 수집해서 각종 통계 처리
REST API – 리뷰 목록 가져오기
curl -X GET
--user your_account:your_password
“http://server:8060/rest-service/reviews-v1/”
>> review_list.xml
REST API – 리뷰 목록 가져오기
REST API – 리뷰 상세 가져오기
curl -X GET
--user your_account:your_password
“.../rest-service/reviews-v1/permaid/details”
>> review_detail.xml
리뷰에 사용된 시간
0
50
100
150
200
250
300
3월 4월 5월 6월
평균리뷰시간
시간(초)
실제 데이터는 아닙니다
개인별 리뷰 개수
역시 실제 데이터가 아닙니다
0
0.5
1
1.5
2
2.5
3
3.5
3월 4월 5월 6월
문제점
• 웹으로 코드 보기가 불편
• 일부 사람들에게 리뷰가 집중되어 정체
• 올리는 사람만 올림
• 관리자가 있어야 함
활성화 되려면
• 프로그램 팀장의 의지
• 코멘트를 많이
• 리뷰 그룹은 5명 정도로 구성
• 담당자가 불편 사항을 바로 해결
• 기본적인 교육
• 신규입사자 교육
• 하루 업무 중 적당 시간을 리뷰에 할당
나쁜 현상
• 모았다가 한꺼번에
• 코멘트 없이 코드만
• 피드백을 받는데 걸리는 시간이 길어짐
좋은 현상
• 사용법이나 불편한 사항이 자주 리포트 됨
• 코멘트로 싸움
• 피드백을 받는데 걸리는 시간이 짧아짐
• 리뷰를 올리는데 시간이 많이 소모
• 리뷰를 하는데 시간이 많이 소모
• 코드 작성 할 때 좀 더 신경을 쓰게 됨 • 자세한 설명을 위해 그림이나 동영상을 첨부
• 간단한 것도 리뷰를 올림
추가적인 용도
• 인터페이스 변경을 알림(라이브러리 등)
• 코드의 변경된 사용법을 질문
감사합니다
Q & A