Skip to content

[개선] 코드 리뷰 기능의 GitHub UI 의존성 제거 및 API 활용 고려 #9

@sudo-Terry

Description

@sudo-Terry

배경

현재 Code-Review 기능은 GitHub 웹 UI의 DOM 요소를 직접 조작하여 리뷰어를 추가합니다. 이 방식은 setTimeout을 사용하여 비동기 로딩을 처리하며, 특정 DOM 선택자에 강하게 의존합니다.

문제점

  1. GitHub UI의 DOM 구조(id="reviewers-select-menu summary", id="review-filter-field" 등)에 대한 높은 의존성으로 인해 UI 변경 시 기능 오작동 가능성이 높습니다.
  2. setTimeout을 사용하여 UI 요소 로딩을 기다리는 방식은 불안정하며 비효율적입니다.
  3. 여러 명의 리뷰어를 추가할 때마다 반복적인 DOM 조작이 발생하여 성능 저하를 일으킬 수 있습니다.
  4. 디버깅용 console.log가 프로덕션 코드에 과도하게 남아 있습니다.
  5. GitHub API를 직접 활용하는 대신 UI 조작을 통해 기능을 구현하여 안정성과 효율성이 떨어집니다.

예상 동작

  1. GitHub UI 변경에 강건한 방식으로 리뷰어 추가 기능을 구현합니다. (예: GitHub API 활용)
  2. setTimeout 대신 요소 로딩을 안정적으로 기다리는 방식을 도입합니다. (예: MutationObserver 또는 requestAnimationFrame 활용, 혹은 GitHub API의 응답 대기)
  3. 리뷰어 추가 로직을 최적화하여 성능 저하를 방지합니다.
  4. 프로덕션 환경에서 불필요한 console.log를 제거합니다.
  5. 가능하다면 GitHub API(mcp_github_update_pull_request 등)를 직접 사용하여 안정적이고 효율적인 리뷰어 요청 기능을 구현합니다.

재현 단계 (버그인 경우)

  1. GitHub Pull Request 페이지로 이동합니다.
  2. "Reviewers" 섹션에서 자동 리뷰 요청 기능을 실행합니다.
  3. GitHub UI가 변경된 경우, 기능이 정상적으로 작동하지 않을 수 있습니다.
  4. 여러 명의 리뷰어를 추가할 경우, UI 반응 속도가 느려질 수 있습니다.

관련 파일

  • features/code-review/content.js
  • manifest.json (필요 시 GitHub API 사용을 위한 권한 추가)

기술적 고려사항

  • GitHub API를 사용하려면 manifest.jsonhost_permissions와 같은 추가 권한이 필요할 수 있습니다.
  • MutationObserver를 사용하여 특정 요소가 나타나는 것을 감지하는 방식으로 setTimeout을 대체할 수 있습니다.
  • GitHub API를 사용할 경우 인증 방식에 대한 고려가 필요합니다.

추가 정보

없음.

라벨 (예시):

  • bug
  • enhancement
  • refactoring
  • api

담당자 (고정):
@sudo-Terry

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions