/code-review-contest

Primary LanguagePythonMIT LicenseMIT

code-review-contest

안녕하세요! 제 1회 소셜인프라테크 개발직군 코드리뷰 대회에 오신 것을 환영합니다.

  • 개최일: 2023년 2월 23일, 30분간
  • 심판: wyuinche
  • 참가자: soonkuk, congchu, Geunbaek, hjoo3355, uom6uoc
  • 참가언어: python3
바로가기
대회 규칙
부정 행위
점수 산출 방법
공격 방법
우승 상품
대회 결과
License

대회 규칙

그럼, 다 같이 참가 규칙을 살펴볼까요?

환경 설정

우선, 여러분이 사용하고 계시는 코딩 머신의 환경 설정을 확인해주세요!

$ pip3 --version
pip 23.0 from /opt/homebrew/lib/python3.10/site-packages/pip (python 3.10)

$ python3 --version
Python 3.10.9

또한, 참가자는 대회에 참여하기 전에 code-review-contest 레포지토리를 fork 해두어야 합니다.

기본 규칙

/contest 폴더에 들어가보세요. 총 7개의 .py 파일이 들어있습니다.

참가자들은 대회가 시작되면 다음 방법으로 점수를 획득할 수 있습니다.

  1. 참가자는 contest/*.py 파일에서 잘못되거나 개선돼야 할 코드를 찾아낸다.
  2. 원 레포지토리의 ISSUE 탭에 1의 내용에 대해 코드 개선을 제안하는 이슈를 등록한다.
  3. 심판은 등록된 이슈를 확인하고 comment를 등록하며 이슈 등록자를 assignee로 설정한다.
  4. 자신이 이슈의 assignee로 등록된 걸 확인한 참가자는 자신이 포크한 작업공간에서 코드를 직접 수정한다.
  5. 코드 수정이 완료되면 참가자는 수정된 코드를 원 레포지토리에 반영하기 위해 직접 Pull-request를 등록한다. (add, rm, feat, fix, chore, test, bug, doc, etc...)
  6. 모든 reviewer로부터 approve를 받아 코드 리뷰가 완료되면 rebase merge를 통해 Pull-request를 close한다.

1에서 개선돼야 할 코드의 예시에는 다음과 같은 것이 있습니다.

  • 일반적인 파이썬 코드 컨벤션에 위배되는 경우
  • 오타 혹은 불필요한 파일, 코드라인 등
  • 잘못된 알고리즘이나 패키지 사용
  • 가독성이 좋지 않은 코드
  • 새로운 기능 추가
  • 기타 등등

Pull-request를 등록할 때의 주의사항에는 다음과 같은 것이 있습니다.

  • PR 등록 후, 자신이 먼저 등록했던 관련 이슈를 Link할 것
  • 반드시 한 명 이상의 다른 참가자를 reviewer로 설정할 것

Pull-request를 close할 때의 주의사항에는 다음과 같은 것이 있습니다.

  • 반드시 reviewer들에게 모두 approve를 받은 뒤 PR을 닫을 것
  • reviewer에게 코드 수정 요구가 있을 시 이를 반영할 것
  • 코드 머지 시 충돌이 발생할 경우 이를 해결한 뒤 머지할 것

기타 주의사항에는 다음과 같은 것이 있습니다.

  • 새로운 PR을 등록하기 전에 자신이 reviewer로 등록된 모든 PR을 반드시 approve해야 합니다.

부정 행위

기본 규칙에 기재된 순서를 지키지 않거나, 부정 행위가 있을 경우 참가자는 최종 점수에서 부정 행위의 정도나 횟수에 따라 감점을 당할 수 있습니다.

부정 행위로 간주될 수 있는 사항에는 다음과 같은 것이 있습니다.

  • 자신이 reviewer로 등록되지 않은 PR을 approve하는 경우 (-1/회)
  • 기본 규칙의 순서를 제대로 지키지 않을 경우(코드 리뷰를 하지 않고 새로운 PR을 등록하는 것 포함) (-3/회)
  • 이유없이 자신이 reviewer로 등록된 PR을 approve하지 않는 경우 (-5/회)
  • PR 등록자에게 올바르지 않거나 터무니없는 코드 수정을 요구할 경우 (-5/회)
  • PR없이 레포지토리의 코드를 직접 임의로 수정하는 경우 (-10/회)
  • 기타 등등 (심판의 결정에 따름)

점수 산출 방법

점수 획득표

획득 조건 세부 조건 점수
이슈 등록 이슈 등록 후 assignee가 되는 순간 점수 획득 1
PR 등록 PR을 등록한 순간 점수 획득 1
코드 리뷰1 자신이 reviewer로 등록된 PR 코드 리뷰 후 comment 등록(최대 2회 인정) 1
코드 리뷰2 자신이 reviewer로 등록되지 않은 PR 코드 리뷰 후 comment 등록(최대 2회 인정) 0.5
코드 리뷰3 자신이 reviewer로 등록된 PR 코드 리뷰 후 approve 1
PR 머지 자신의 PR이 원 레포지토리에 반영된 경우 하단 별도 기재
  • 자신이 reviewer로 등록된 PR에 대해 다른 코드 수정 요구 없이 바로 승인하는 경우, comment와 함께 approve를 하면 한 번에 2점이 인정됩니다. 코드 리뷰를 마무리 할 시, LGTM!을 외쳐주세요~

PR 머지 점수

이슈 종류 점수
불필요한 파일 삭제 2
단순 오타 2
코드 컨벤션 5
가독성이 좋지 않은 코드 7
잘못된 알고리즘, 패키지 사용 등 코드 문법 오류 10
더 효율적인 알고리즘 및 구현 제안 10
새로운 기능 추가 15
기타 심판 재량

새로운 기능 추가

  • 참가자는 /contest 폴더에 자신이 개발한 새로운 기능을 추가할 수 있습니다.
  • __새로운 기능__은 반드시 1 개의 .py 파일로 구현되어야 하며 python 새로운기능.py 명령어를 통해 그 자체로 실행될 수 있어야 합니다.
  • 새로운 기능을 추가할 때도 이슈에 어떤 기능을 추가할 것인지 먼저 제안한 후 PR을 등록해야 합니다.
  • 새로운 기능은 반드시 10라인 이상의 코드로 이루어져야 합니다. 이때, 공백만으로 이루어진 empty line은 산정에서 제외합니다.
  • 코드의 복잡성은 평가하지 않습니다. 자유롭게^^

공격 방법

여러분은 다른 참가자가 PR 머지를 통해 점수를 획득하지 못하도록 방해해야 합니다!

예를 들어 여러분은 다음 방법으로 다른 참가자를 공격할 수 있습니다.

  • 여러명의 참가자를 자신이 등록한 PR의 reviewer로 등록한다.
    • 하지만 이 방법은 자신의 PR이 모든 reviewer로부터 approve될 때까지의 시간이 더 많이 소요된다는 단점이 있습니다.
  • 다른 참가자의 PR 코드를 꼼꼼히 확인한 후 코드 개선을 요구한다.
  • 남들보다 많은 이슈를 등록한다.
    • PR을 올리지 않고 여러 개의 이슈를 먼저 등록하는 것은 가능합니다.
    • 이 경우 다른 참가자들은 눈에 잘 띄는 코드 개선점을 찾기가 더 어려워집니다.

우승 상품

  • 1등: 스타벅스 케이크 + 아메리카노 쿠폰

  • 2등: 스타벅스 아메리카노 쿠폰

  • 인기상: 소정의 편의점 정액권 (재밌는 코드를 짠 참가자에게 드립니다^^)

대회 결과

1등

2등

인기상

License

MIT