[dev] 구글의 코드 리뷰

[dev] 구글의 코드 리뷰

기술 블로그에 약간 지침을 느끼고, 하나씩 배운 것들을 정리하고자 최근에 읽었던 글 중 기억에 남는 부분 위주로 번역하겠습니다.

Code Reviews at Google are lightweight and fast 라는 글 입니다.

구글에서 코드리뷰는 엔지니어의 중요한 역할 중 하나 입니다. 엔지니어들은 코드를 깔끔하게 관리하고자 하기 때문이죠.
마이크로 소프트의 코드리뷰와 비슷할 수 있으나, 구글만의 특징이 있습니다.

그래서 구글에서의 코드리뷰 방법을 소개하도록 하겠습니다.

Code Review Study at Google

study to understand Google’s internal code review processes 논문에 기술한 방법으로 코드리뷰를 합니다.

Preparing code for review

코드를 수정하면 마크가 생기고, 변경사항이 머지되고 나면 코드리뷰가 시작됩니다. 구글은
내부 코드리뷰 도구인 Critique로 변경사항을 먼저 체크합니다.

코드리뷰를 보내기 전에는 정적 분석도구를 통해 코드를 실행합니다. 내부에서 사용되는, Tricorder를 실행하고 결과를 검토합니. 그리고 최소 한명 이상의 리뷰자를 선정해 리뷰를 요청합니다.

Reviewers give feedback

리뷰어는 코드를 살펴보고 문제가 있거나 설명이 필요한 경우 코멘트를 남깁니다. 그 다음 요청자는 코멘트를 회신하여 코멘트를 처리합니다. 코드가 수정되었을 경우에는 새 버젼을 올려 변경사항을 확인할 수 있게 합니다. 리뷰어가 만족하면 LGTM(Look good to me)를 표시하여 승인 합니다.

Code Reviews at Google

  • 모든 변경된 코드는 리뷰 되어야 합니다.
    • 75% 이상의 코드는 한명의 리뷰어가 승인했습니다.
  • 승인한 리뷰어 또한 코드에 오너쉽을 가지며, 가독성에 대한 보장을 해야합니다.
  • 작은 리뷰는 1시간 이내에, 커도 4시간 안에는 리뷰 될 수 있어야 합니다.
  • 변경사항은 적고, 자주 리뷰가 일어나야 합니다.
    • 10개의 파일 보다는 적게, 24 라인 이하의 변경이 일어나야 합니다.

How to get a readability certification

가독성을 보장하기 위해서는 코드 검토 사례를 바탕으로 판단합니다. 개발자들은 변경된 코드의 리뷰를 요청하고, 코드의 성능과 동작과는 별개로 코딩스타일과 코딩규칙들을 봅니다. 다양한 언어는 각각의 코딩스타일이 있으며, swift style guide는 이곳에 있습니다.

Motivations and benefits for code reviews at Google

코드 리뷰는 종종 버그를 찾는데에 도움을 주지만, 그 밖에도 다른 이점들이 있습니다.

  • 교육 (멘토링, 개발자를 위한 학습, 지식 보급)
  • 규칙 유지 (테스트, 스타일, 디자인 유지)
  • 보안 보장 (아무도 모르는 코드 변경이 일어나지 않음)
  • 사고 예방 (버그 수정 및 코드 품질 확인)
  • 의사 결정 추적 (코드의 진화 및 변경 이유 이해)

코드리뷰는 단순히 검사가 아니라 교육의 도구이며, 자연스러운 인수 인계와 보안 강화를 할 수 있어보입니다. 도입을 망설이기 보다는 어떻게 해야 더 잘할 수 있는지를 고민해야 하지 않을까요?

댓글

이 블로그의 인기 게시물

[IOS] AppDelegate는 뭐하는 녀석이지?

[git] git의 upstream과 origin 헷갈리는 사람 손!

[git] Github 이슈 라벨(issue labels)