SlideShare une entreprise Scribd logo
1  sur  32
풀리퀘를 부탁해!
PULL REQUEST로 간편하게 코드 리뷰하기
코드 리뷰?
코드 리뷰?
 잠재 결함을 찾아 내고 개선하며 전반적인 S/W 품질을 높이려는 활동.
 S/W를 실행하지 않고 사람이 직접 검토.
 반드시 결함을 찾아 낼 수 있는 것은 아님!
코드 리뷰를 하면?
좋은 코드 공유
팀 협업 강화
나쁜 코드 냄새
개발자 지속 성장
결함 발견
덤
중요한 것은?
리뷰 방법?
팀 검토(Team Review)
https://www.youtube.com/watch?v=clCHUbaJV14
문제는…
코드 리뷰 시스템
문제는…
분석 설계 구현 시험 배포
코드리뷰
풀 리퀘스트(Pull Request)
http://www.slideshare.net/insomniac.at.work/introduction-to-github-slideshare
하기 전에 잠깐!
장애물
 할 일도 많은데 리뷰까지…
 지적에 대한 두려움
코드 작성은…
 한 번에 하나의 작업만 커밋
 큰 이슈는 원자 단위(atomic)로 나눈다
 4h ~ 16h 동안 해결 가능한 크기가 일반적
 커밋 로그에는 이슈 번호 기록
 첫 번째 리뷰어는 바로 자신
 코딩 표준 준수
 경고 제거
리뷰 요청은…
 리뷰는 작게 자주
 코드가 작으면 리뷰하기도 쉽다
 원할 때 마다
 완료하지 않았어도 원할 때마다 요청
http://hamster.school/ko/tutorial/scratch/line_tracer_one_sensor.jsp
From Puss in boots by Dreamworks
리뷰는 언제…
 리뷰를 먼저
 정말 급한 일이 아니라면 리뷰 먼저
 그날 받은 리뷰는 그날 처리
 오후에 받은 거라면 다음날 오전까지
 늦어도 24시간 이내에
 늦어진다면 언제 할 수 있을지 요청자에게 알리고 의사를 묻자
 평소에 도저히 리뷰할 시간이 안 나면?
 리뷰하는 날을 정하자.
리뷰할 때는…
 누구나 실수한다, 물론 자신도
 코드 ≠ 자신
 부드러운 어조, 칭찬하자!
 작성자의 결정 존중
 리뷰 내용 외 다른 내용은 언급 금지
 추후 문제가 생겨도 비난하지 말고 빨리 해결책 찾자
 글만으로 이해할 수 없으면 만나서
http://nownews.seoul.co.kr/news/newsView.php?id=20140102601008
http://www.dailymail.co.uk/embed/video/1153556.html
리뷰는 무엇을…
 코딩 표준?
 불필요한 내용은?
 전체적인 디자인은?
 테스트하기 쉬운 구조?
 더 나은 로직은?
 재사용성과 확장성?
상황에 맞게 적절히
본격적으로…
기본 흐름
Discuss MergeBranch
기본 흐름
Main Main’
Local
1. Fork
2. Clone
3. Fix
(branch)
4. Push (branch)
8. Push
5. Pull request
7. Fetch
6. Merge
Pull Request 만들기
 변경 내용을 (개인/작업) 저장소에 올림
 Stash에서 (개인/작업) 저장소 접속 후 Create pull request 선택
또는 Source, Commits, Branches 페이지 액션 메뉴에서 Compare 선택
Pull Request 만들기
 출발지와 목적지 브랜치 선택
 출발지: 코드를 변경한 브랜치
 목적지: 변경한 코드를 병합할 브랜치
Pull Request 만들기
 Diff, Commits 탭에서 변경 내용 먼저 확인
 Create pull request 선택
 제목은 한 줄 요약
 설명을 자세히
 멘션(mention) 기능
 @ + 사용자 표시 이름, 계정, 이메일 등
 리뷰어 추가
Pull Request 고치기
 Pull request 페이지에서 Edit 선택
 제목, 설명, 리뷰어
 목적지 브랜치
Pull Request 논의
 Pull request에서 가장 중요한 부분
 Overview
 전체 활동 내역
 전체적인 의견
Pull Request 논의
 Diff
 병합할 코드 내용 표시
 소스 파일 또는 코드 줄 단위 의견
Pull Request 논의
 Commits
 병합할 모든 커밋 목록
 Pull request를 생성한 브랜치 코드 변경  pull request 내용에 자동 반영
 Fetch 후 Local에서 확인
 git fetch origin pull-requests/2/from:pullrequest
 git checkout pullrequest
Pull Request 논의
 Pull request tasks
 논의 내용에 추가한 작업 목록
 Overview 또는 Shift+T로 목록 확인 가능
Pull Request 논의
 Jira 이슈 통합
Pull Request 합치기
 Pull request 페이지에서 Merge 선택
 Pull request에 대한 추가 정보 기록 가능
 Delete source branch after merging
Q&A
Reference
• http://www.slideshare.net/pioneerhjlee
/code-review-devon2013
• http://sv-story.blogspot.kr/2013/04/blog-post_28.html

Contenu connexe

Similaire à 풀리퀘를 부탁해!

코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked ChangesJiyeon Seo
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님NAVER D2
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기2015 SW마에스트로 100+ 컨퍼런스
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)Ildoo Kim
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, VueGunhee Lee
 
Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발Sukjoon Kim
 
[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기
[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기
[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기nexusz99
 
practical perf testing - d2startup
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startupJunHo Yoon
 
비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표Hong Min Kim
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨KwangSeob Jeong
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksSunuk Park
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)SangIn Choung
 

Similaire à 풀리퀘를 부탁해! (20)

코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue
 
Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발
 
[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기
[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기
[ 2015 SOSCON ]오픈스택 swift로 시작하는 오픈소스 분석 삽질기
 
practical perf testing - d2startup
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startup
 
비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표비영리 섹터를 위한 챗봇 발표
비영리 섹터를 위한 챗봇 발표
 
챗봇 스터디
챗봇 스터디챗봇 스터디
챗봇 스터디
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworks
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)
 

Plus de Mickey SJ Lee

초간단 SW 개발 방법 for dummies
초간단 SW 개발 방법 for dummies초간단 SW 개발 방법 for dummies
초간단 SW 개발 방법 for dummiesMickey SJ Lee
 
실용주의 프로그래머를 위한 개발환경 만들기
실용주의 프로그래머를 위한 개발환경 만들기실용주의 프로그래머를 위한 개발환경 만들기
실용주의 프로그래머를 위한 개발환경 만들기Mickey SJ Lee
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체Mickey SJ Lee
 
5. hg init – a mercurial tutorial by tortoise hg repository architecture
5. hg init – a mercurial tutorial by tortoise hg   repository architecture5. hg init – a mercurial tutorial by tortoise hg   repository architecture
5. hg init – a mercurial tutorial by tortoise hg repository architectureMickey SJ Lee
 
4. hg init – a mercurial tutorial by tortoise hg merging
4. hg init – a mercurial tutorial by tortoise hg   merging4. hg init – a mercurial tutorial by tortoise hg   merging
4. hg init – a mercurial tutorial by tortoise hg mergingMickey SJ Lee
 
3. hg init – a mercurial tutorial by tortoies hg fixing goofs
3. hg init – a mercurial tutorial by tortoies hg   fixing goofs3. hg init – a mercurial tutorial by tortoies hg   fixing goofs
3. hg init – a mercurial tutorial by tortoies hg fixing goofsMickey SJ Lee
 
2. hg init – a mercurial tutorial by tortoies hg setting up for a team
2. hg init – a mercurial tutorial by tortoies hg   setting up for a team2. hg init – a mercurial tutorial by tortoies hg   setting up for a team
2. hg init – a mercurial tutorial by tortoies hg setting up for a teamMickey SJ Lee
 
1. hg init – a mercurial tutorial by tortoies hg ground up mercurial
1. hg init – a mercurial tutorial by tortoies hg   ground up mercurial1. hg init – a mercurial tutorial by tortoies hg   ground up mercurial
1. hg init – a mercurial tutorial by tortoies hg ground up mercurialMickey SJ Lee
 

Plus de Mickey SJ Lee (8)

초간단 SW 개발 방법 for dummies
초간단 SW 개발 방법 for dummies초간단 SW 개발 방법 for dummies
초간단 SW 개발 방법 for dummies
 
실용주의 프로그래머를 위한 개발환경 만들기
실용주의 프로그래머를 위한 개발환경 만들기실용주의 프로그래머를 위한 개발환경 만들기
실용주의 프로그래머를 위한 개발환경 만들기
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
 
5. hg init – a mercurial tutorial by tortoise hg repository architecture
5. hg init – a mercurial tutorial by tortoise hg   repository architecture5. hg init – a mercurial tutorial by tortoise hg   repository architecture
5. hg init – a mercurial tutorial by tortoise hg repository architecture
 
4. hg init – a mercurial tutorial by tortoise hg merging
4. hg init – a mercurial tutorial by tortoise hg   merging4. hg init – a mercurial tutorial by tortoise hg   merging
4. hg init – a mercurial tutorial by tortoise hg merging
 
3. hg init – a mercurial tutorial by tortoies hg fixing goofs
3. hg init – a mercurial tutorial by tortoies hg   fixing goofs3. hg init – a mercurial tutorial by tortoies hg   fixing goofs
3. hg init – a mercurial tutorial by tortoies hg fixing goofs
 
2. hg init – a mercurial tutorial by tortoies hg setting up for a team
2. hg init – a mercurial tutorial by tortoies hg   setting up for a team2. hg init – a mercurial tutorial by tortoies hg   setting up for a team
2. hg init – a mercurial tutorial by tortoies hg setting up for a team
 
1. hg init – a mercurial tutorial by tortoies hg ground up mercurial
1. hg init – a mercurial tutorial by tortoies hg   ground up mercurial1. hg init – a mercurial tutorial by tortoies hg   ground up mercurial
1. hg init – a mercurial tutorial by tortoies hg ground up mercurial
 

풀리퀘를 부탁해!

Notes de l'éditeur

  1. 리뷰 조직 구성 필요
  2. 회의실 확보, 시간 공유, 함께 모여야 하고 리뷰어는 코드를 미리 읽어 온 후 회의실에서 코드 리뷰 해야… 하지만! 대부분 미리 읽지도 않고 짧은 시간에 제대로 살펴 보기도 어려우며 모여도 그냥 앉아 있는 일이 다반사…
  3. Crucible, Collaborator, Review Board – 별개 시스템 구성 필요
  4. 각자 편할 때 리뷰할 수 있음 우회로가 존재 – 할 수도 있고 아님 말고
  5. 코드와 함께 숨쉬는 코드 리뷰 – 코드로 커뮤니케이션, 즉 의사소통
  6. 코드 리뷰에서 장애물
  7. 이슈가 너무 크면 검토하기 어렵다
  8. 영화 소스 코드: 8분 전의 세계로 여행하며 열차 테러범을 찾는 영화. 실패할 때마다 재시도  이전의 자신은 지금의 자신과 다름. 서로 다른 세계에 존재. 평행 우주 얘기. 이처럼 코드 ≠ 자신 코드 스타일, 전반적인 디자인, 확장성과 유연함, 테스트는 쉬운지 등은 당연히 검토!
  9. 풀리퀘 기본 흐름 Branch, Merge => Discuss 추가 (논의, 리뷰)
  10. 속 없는 찐빵
  11. 링크 아이콘 – 해당 논의 내용과 소스 코드로 이동
  12. Stash 내에서 Jira 이슈 확인, 이슈 ID 선택하면 Jira로 이동