본문으로 건너뛰기

Cursor에서 Bugbot을 사용한 자동화된 코드 리뷰

Bugbot

Bugbot은 GitHub 저장소와 직접 통합되는 Cursor의 내장 자동화 코드 리뷰 에이전트입니다. 풀 리퀘스트를 열면 Bugbot은 diff를 분석하고, 잠재적 버그를 식별하고, 개선 사항을 제안하며, PR에 인라인 코멘트를 남깁니다. 이 가이드는 초기 설정부터 고급 구성까지 모든 것을 다루며, 포럼 사용자가 자주 겪는 PR 라우팅 및 GitHub Teams 통합 문제도 포함합니다.

Bugbot의 기능​

Bugbot은 각 풀 리퀘스트에 대해 여러 분석 레이어를 수행합니다:

  • 버그 감지 - 논리 오류, null 참조 위험, 엣지 케이스 식별
  • 보안 스캐닝 - SQL 인젝션이나 하드코딩된 시크릿과 같은 잠재적 취약점 플래그 지정
  • 스타일 및 일관성 - 코드베이스 패턴에서 벗어난 부분 확인
  • 성능 힌트 - N+1 쿼리와 같은 비효율적 패턴 강조
  • 테스트 커버리지 - 변경 사항에 해당하는 테스트가 없을 때 표시
팁

Bugbot은 완전히 클라우드에서 실행됩니다. 리뷰가 이루어지기 위해 Cursor를 열어둘 필요가 없습니다. 저장소에서 활성화되면, 자리에 있든 없든 Bugbot은 모든 PR을 자동으로 리뷰합니다.

사전 요구 사항​

Bugbot을 설정하기 전에 다음을 확인하세요:

  1. Cursor Pro 또는 Business 플랜 - Bugbot은 무료 티어에서 사용할 수 없습니다
  2. 풀 리퀘스트 워크플로가 활성화된 GitHub 저장소
  3. 저장소에 대한 관리자 또는 유지관리자 권한 (앱 설치에 필요)
  4. 팀 기반 PR 라우팅이 필요한 경우 GitHub Teams 구성

저장소에서 Bugbot 활성화​

포럼 사용자가 가장 많이 보고하는 문제는 Bugbot이 "disabled for this repository"라고 표시하는 것입니다. 이는 거의 항상 GitHub App 설치 단계가 건너뛰어졌거나 부분적으로 완료된 데서 비롯됩니다.

1단계: Cursor GitHub App 설치​

Bugbot은 GitHub App을 통해 작동합니다. 아직 설치하지 않은 경우:

  1. Cursor를 열고 Settings > Features > Bugbot으로 이동
  2. Connect GitHub Account 클릭
  3. GitHub로 리디렉션되어 Cursor 앱을 인증
  4. 범위 선택:
    • All repositories - Cursor가 계정의 모든 저장소를 리뷰할 수 있음
    • Selected repositories - 리뷰할 특정 저장소 선택
경고

설치 중에 특정 저장소를 선택하고 나중에 새 저장소를 생성한 경우, 명시적으로 추가할 때까지 Bugbot은 새 저장소에서 작동하지 않습니다. 이것이 "disabled for this repository" 오류의 가장 큰 원인입니다. 수정하려면 GitHub > Settings > Integrations > Applications > Cursor > Configure로 이동하여 새 저장소를 추가하세요.

2단계: Cursor 설정에서 Bugbot 활성화​

GitHub 앱 설치 후:

  1. Cursor Settings(Cmd/Ctrl + ,) 열기
  2. Features > Bugbot으로 이동
  3. Enable Bugbot을 ON으로 전환
  4. Bugbot을 활성화할 저장소 선택

3단계: 연결 확인​

테스트 풀 리퀘스트를 생성하고 Bugbot이 응답하는지 확인:

# Create a test branch
git checkout -b test-bugbot-connection

# Make a small change
echo "// Bugbot test" >> README.md
git add README.md
git commit -m "test: verify bugbot connection"
git push origin test-bugbot-connection

GitHub에서 PR을 엽니다. 30-60초 내로 Bugbot이 코멘트를 게시해야 합니다. 그렇지 않으면 아래 문제 해결 섹션으로 진행하세요.

PR 라우팅 및 리뷰어 할당​

Bugbot은 파일 경로, 코드 소유권 또는 팀 멤버십을 기반으로 풀 리퀘스트를 특정 리뷰어에게 라우팅할 수 있습니다. 포럼 사용자는 PR 라우팅이 항상 예상대로 작동하지 않는다고 보고하며, 특히 GitHub Teams에서 그렇습니다.

PR 라우팅 이해​

PR 라우팅은 Bugbot이 PR을 분석할 때 누가 리뷰 요청을 받는지 결정합니다. 라우팅 로직은 다음 우선순위를 따릅니다:

  1. CODEOWNERS 파일 - 있는 경우, 변경된 파일의 소유자가 리뷰어가 됨
  2. GitHub Teams 매핑 - Bugbot 구성을 통한 팀 기반 라우팅
  3. 폴백 - 모든 유지관리자가 리뷰 요청을 받음

CODEOWNERS 구성​

저장소 루트(또는 .github/CODEOWNERS)에 CODEOWNERS 파일을 생성합니다:

# Default owners
* @team-leads

# Frontend files
src/components/ @frontend-team
src/pages/ @frontend-team
src/styles/ @frontend-team

# Backend files
src/api/ @backend-team
src/models/ @backend-team
src/middleware/ @backend-team

# Infrastructure
terraform/ @devops-team
docker/ @devops-team
.github/workflows/ @devops-team

# Security-sensitive files
src/auth/ @security-team @team-leads
.env* @security-team

GitHub Teams 통합​

팀 기반 라우팅을 위해 Bugbot은 GitHub Teams 멤버십을 읽습니다. 구성하려면:

  1. GitHub 조직에서 Org Settings > Teams 아래에 팀이 설정되어 있는지 확인
  2. 각 팀에 멤버 추가
  3. CODEOWNERS에서 팀 이름(@ 접두사 포함) 참조
  4. Cursor에서 Settings > Features > Bugbot > Advanced로 이동
  5. Use GitHub Teams for routing 활성화
팁

CODEOWNERS의 GitHub 팀 이름은 정확히 일치해야 합니다. 흔한 실수는 팀 slug 대신 표시 이름을 사용하는 것입니다. 예를 들어, 팀 이름이 "Frontend Engineers"이고 slug가 frontend-engineers인 경우, CODEOWNERS 항목은 @Frontend Engineers가 아닌 @frontend-engineers여야 합니다.

일반적인 PR 라우팅 문제​

문제: PR이 잘못된 팀으로 라우팅됨​

증상: 백엔드 파일을 변경하는 PR이 프론트엔드 팀으로 라우팅됩니다.

원인: CODEOWNERS 패턴 중복. 첫 번째로 일치하는 패턴이 우선하며, 패턴은 위에서 아래로 평가됩니다.

해결 방법: 더 구체적인 패턴이 일반적인 패턴보다 앞에 오도록 CODEOWNERS 파일을 재정렬합니다:

# Specific first
src/auth/ @security-team @team-leads
src/api/ @backend-team

# Then general
src/ @all-developers
* @team-leads

문제: 팀이 리뷰 요청을 받지 못함​

증상: Bugbot은 PR을 리뷰하지만 GitHub 팀 멤버가 리뷰어로 추가되지 않습니다.

원인: GitHub 팀이 "secret"(비공개)으로 설정되어 있거나 멤버가 없습니다.

해결 방법: GitHub > Organization > Teams > [팀 이름] > Settings로 이동. 리뷰 요청을 받기 원하는 경우 팀 가시성이 "Secret"으로 설정되어 있지 않은지 확인. 팀에 활성 멤버가 있는지 확인.

Bugbot 구성​

기본 활성화 외에도 Bugbot은 동작을 조정할 수 있는 몇 가지 구성 옵션을 제공합니다.

리뷰 엄격도​

Bugbot이 발견 사항에 대해 얼마나 엄격한지 제어:

{
"bugbot.severity": "balanced",
"bugbot.maxComments": 20,
"bugbot.autoResolve": false
}
엄격도동작
strict사소한 스타일 문제를 포함한 모든 발견 사항 보고
balanced버그, 보안 문제 및 중요한 스타일 문제 보고 (기본값)
lenient버그 및 보안 취약점만 보고

파일 제외​

생성 또는 벤더된 파일의 리뷰 방지:

{
"bugbot.excludePaths": [
"**/*.min.js",
"**/*.min.css",
"node_modules/**",
"dist/**",
"build/**",
"*.lock",
"package-lock.json",
"yarn.lock"
]
}

보안 에이전트 구성​

Bugbot에는 취약점을 스캔하는 전용 보안 에이전트가 포함되어 있습니다. 독립적으로 구성:

{
"bugbot.securityAgent": {
"enabled": true,
"sensitivityLevel": "high",
"scanForSecrets": true,
"scanForDependencies": true,
"ignorePatterns": [
"test/**",
"__mocks__/**"
]
}
}
경고

보안 에이전트는 PR diff에서 하드코딩된 시크릿(API 키, 비밀번호, 토큰)을 스캔합니다. 시크릿이라고 판단되는 것을 발견하면 중대한 문제로 플래그 지정합니다. 이것은 안전 기능입니다. 플래그 지정된 문자열이 실제 시크릿이 아닌지 확인하지 않고 이러한 경고를 무시하지 마세요. 실제 키처럼 보이는 테스트 픽스처도 누군가가 프로덕션 코드에 복사하면 위험할 수 있습니다.

승인 워크플로​

Bugbot은 GitHub의 리뷰 승인 시스템과 통합됩니다. Bugbot의 발견 사항이 PR 병합을 차단할지 여부를 구성할 수 있습니다.

필수 리뷰 설정​

GitHub 저장소 설정에서:

  1. Settings > Branches > Branch protection rules로 이동
  2. 메인 브랜치 규칙 편집
  3. Require pull request reviews before merging 아래에서:
    • 필수 승인 리뷰 수 설정 (예: 2)
    • 새 커밋이 푸시될 때 Dismiss stale pull request approvals 활성화
    • Require review from Code Owners 활성화

Bugbot을 필수 리뷰어로 설정​

Bugbot을 필수 리뷰어로 구성할 수 있습니다. 활성화되면, Bugbot이 리뷰를 완료하고 승인하거나 리뷰가 기각될 때까지 PR을 병합할 수 없습니다.

Cursor에서:

  1. Settings > Features > Bugbot > Workflow
  2. Block merge on critical findings 활성화
  3. 차단 심각도 임계값 설정 (기본값: critical 및 high)
팁

차단 기능은 신중하게 사용하세요. 임계값을 너무 낮게 설정하면(낮은 심각도 발견 사항에서 차단), 스타일 문제가 병합을 방해할 때 개발자가 불만을 느낄 수 있습니다. "critical 및 high"로 시작하여 팀의 경험에 따라 조정하세요.

Bugbot 의견 불일치 처리​

때로 Bugbot이 개발자가 오탐지라고 생각하는 것을 플래그 지정합니다. 권장되는 워크플로:

  1. GitHub의 Bugbot 코멘트에서 Resolve conversation 클릭
  2. 오탐지인 이유를 설명하는 코멘트 추가
  3. 동일한 패턴에서 반복되는 오탐지인 경우, // bugbot-ignore 코멘트 추가:
# bugbot-ignore: This is intentionally using eval for a DSL interpreter
result = eval(user_expression)

"Disabled for This Repository" 문제 해결​

이것은 가장 많이 보고되는 Bugbot 문제입니다. 이 진단 플로우차트를 따르세요.

진단 1단계: GitHub App 설치 확인​

# Check if the Cursor app has access to your repo
gh api repos/{owner}/{repo}/installation --jq '.id'

404를 반환하면, GitHub App이 이 저장소에 설치되지 않은 것입니다.

해결 방법: GitHub > Settings > Integrations > Applications > Cursor > Configure로 이동하여 저장소를 추가하세요.

진단 2단계: Cursor의 저장소 설정 확인​

  1. Cursor 설정 열기
  2. Features > Bugbot으로 이동
  3. 활성화된 목록에서 저장소 찾기
  4. 없으면 Add Repository 클릭하여 선택

진단 3단계: 브랜치 보호 규칙 확인​

Bugbot은 저장소가 GitHub App에 리뷰 코멘트를 게시할 수 있도록 허용해야 합니다. 브랜치 보호 규칙이 너무 제한적인 경우:

  1. GitHub > Settings > Branches로 이동
  2. 브랜치 보호 규칙 편집
  3. Allow specified actors to bypass requirements에 Cursor 앱이 포함되어 있는지 확인
  4. Restrict who can push to matching branches에 의해 앱이 차단되지 않았는지 확인

진단 4단계: 충돌하는 앱 확인​

다른 자동화된 리뷰 도구(CodeRabbit, GitHub Copilot, SonarQube)를 설치한 경우, Bugbot과 충돌할 수 있습니다.

해결 방법: 다른 리뷰 봇을 일시적으로 비활성화하고 Bugbot이 작동하기 시작하는지 확인. 작동한다면, 도구가 공존하도록 구성해야 하며, webhook 설정이나 리뷰 트리거를 조정해야 할 수 있습니다.

진단 5단계: Bugbot 상태 확인​

# Check Cursor service status
curl -s https://status.cursor.sh/api/v2/incidents.json | jq '.incidents[] | select(.status != "resolved")'

활성 인시던트가 있는 경우, 해결될 때까지 기다렸다가 재시도하세요.

경고

Cursor 업데이트 직후에 Bugbot이 "disabled"로 표시되는 경우가 있습니다. 이것은 GitHub 토큰 재인증이 필요한 알려진 문제입니다. Settings > Features > Bugbot로 이동하여 Disconnect를 클릭한 다음 GitHub 계정을 Reconnect하세요. 구성을 잃지 않고 토큰이 새로고침됩니다.

Bugbot 및 GitHub Teams 통합 심층 분석​

팀 멤버십 동기화​

Bugbot은 성능을 위해 GitHub 팀 멤버십을 캐시합니다. 팀 멤버를 추가하거나 제거하면, 변경 사항이 즉시 반영되지 않을 수 있습니다.

강제 동기화하려면:

  1. Cursor 설정 열기
  2. Features > Bugbot > Advanced로 이동
  3. Sync GitHub Teams 클릭
  4. 동기화 완료 대기 (보통 30초 이내)

다중 팀 멤버십​

개발자가 여러 팀에 속한 경우, Bugbot은 CODEOWNERS 일치를 기반으로 라우팅합니다. 파일이 여러 팀에 소유되고 개발자가 양쪽 모두에 있는 경우, 중복이 아닌 단일 리뷰 요청을 받습니다.

팀 기반 리뷰 정책​

팀별로 다른 리뷰 요구 사항을 구성할 수 있습니다:

{
"bugbot.teamPolicies": {
"security-team": {
"requiredReviews": 2,
"blockOnHighSeverity": true,
"additionalScanners": ["dependency-check"]
},
"frontend-team": {
"requiredReviews": 1,
"blockOnHighSeverity": false
}
}
}

Bugbot 성능 및 한계​

리뷰 속도​

Bugbot은 일반적으로 PR이 열리거나 업데이트된 후 30-90초 내에 리뷰를 완료합니다. 속도에 영향을 미치는 요인:

요인영향
PR 크기 (변경 라인 수)큰 diff는 분석에 더 오래 걸림
파일 수각 파일은 개별 분석이 필요
저장소 크기더 큰 코드베이스는 더 많은 컨텍스트 수집이 필요
현재 부하피크 시간에는 응답이 느릴 수 있음

코멘트 한계​

기본적으로 Bugbot은 리뷰당 최대 20개의 코멘트를 게시합니다. 이는 PR 작성자가 압도되는 것을 방지합니다. 이를 조정할 수 있습니다:

{
"bugbot.maxComments": 50
}
팁

Bugbot이 매 PR마다 코멘트 한계에 도달하는 경우, 심각도 임계값을 높이는 것을 고려하세요. 한계에 도달하는 것은 Bugbot이 많은 낮은 우선순위 문제를 발견한다는 것을 의미합니다. 이를 필터링하면 리뷰가 더 실행 가능해집니다.

속도 제한​

Bugbot은 GitHub API 속도 제한을 준수합니다. 조직에서 동시에 많은 PR이 열리는 경우, 리뷰가 대기열에 들어갈 수 있습니다. Bugbot은 순서대로 처리하며, 모든 리뷰는 최종적으로 완료됩니다.

Bugbot 도입 모범 사례​

읽기 전용 모드로 시작​

기존 저장소에서 Bugbot을 처음 활성화할 때, 읽기 전용 모드(병합 차단 없음)로 시작하세요. 이렇게 하면 팀이 워크플로를 방해하지 않고 Bugbot이 무엇을 발견하는지 볼 수 있습니다. 1-2주 동안 발견 사항을 검토한 후, 구성을 조정하고 적절한 경우 병합 차단을 활성화합니다.

Bugbot 발견 사항을 학습 도구로 사용​

Bugbot 발견 사항은 현재 PR을 수정하는 것에만 관한 것이 아닙니다. 학습 기회입니다:

  1. 반복되는 발견 유형 추적 (예: "null 참조 위험"이 30%의 PR에서 나타남)
  2. 향후 코드에서 패턴을 방지하기 위해 .cursor/rules 항목 생성
  3. 팀 채널에서 흥미로운 발견 사항 공유

정기적인 구성 검토​

월별로 Bugbot 구성을 검토하세요:

  • 파일 제외가 여전히 적절한가?
  • 심각도 임계값이 올바르게 조정되었는가? | 억제해야 할 새로운 오탐지 패턴이 있는가? | 현재 PR 크기에 대해 코멘트 한계가 적절한가?

요약​

Bugbot은 Cursor에 연결된 GitHub 저장소의 모든 풀 리퀘스트에 자동화된 지능형 코드 리뷰를 제공합니다. 가장 일반적인 문제인 "disabled for this repository"는 GitHub App 설치 범위를 검증하고 저장소가 명시적으로 추가되었는지 확인하여 거의 항상 해결됩니다. CODEOWNERS로 PR 라우팅을 구성하고, 보안 에이전트를 조정하며, 병합 차단에 점진적 접근 방식을 채택함으로써, 팀은 Bugbot을 버그 및 보안 취약점에 대한 신뢰할 수 있는 첫 번째 방어선으로 활용할 수 있습니다.