Skip to content

chanani/lib-claude-reviewer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

23 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Claude PR Reviewer ๐Ÿค–

Claude AI ์ž๋™ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์„ค์น˜

Gradle

dependencies {
    implementation 'io.github.chanani:claude-reviewer:1.0.5'
}

Maven

<dependency>
    <groupId>io.github.chanani</groupId>
    <artifactId>claude-reviewer</artifactId>
    <version>1.0.5</version>
</dependency>

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉ

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์‚ฌ์šฉ (GitHub Actions์—์„œ ์ž๋™)

import com.reviewer.ClaudeReviewer;

public class Main {
    public static void main(String[] args) throws Exception {
        ClaudeReviewer.builder()
                .build()
                .executeFullReview();
    }
}

2. CI/CD๋กœ ์‚ฌ์šฉ (PR ์ž๋™ ๋ฆฌ๋ทฐ)

ํ”Œ๋žซํผ ์ง€์›

  • โœ… GitHub Actions - ์™„์ „ ์ง€์›
  • โœ… Gitea Actions - ์™„์ „ ์ง€์› (v1.0.5+)

[GitHub Actions ์„ค์ •]

โš ๏ธ ์ค‘์š”: Workflow ํŒŒ์ผ ์ƒ์„ฑ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค!

GitHub Actions์—์„œ ์ž๋™ PR ๋ฆฌ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜ 2๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:


๋‹จ๊ณ„ 1: GitHub Secrets์— API Key ์ถ”๊ฐ€

  1. GitHub ์ €์žฅ์†Œ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. Settings โ†’ Secrets and variables โ†’ Actions
  3. "New repository secret" ํด๋ฆญ
  4. ์•„๋ž˜ ์ •๋ณด ์ž…๋ ฅ:
    • Name: ANTHROPIC_API_KEY
    • Secret: ๋‹น์‹ ์˜ Claude API ํ‚ค (์˜ˆ: sk-ant-...)
  5. Add secret ํด๋ฆญ

๋‹จ๊ณ„ 2: Workflow ํŒŒ์ผ ์ƒ์„ฑ (ํ•„์ˆ˜!)

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์•„๋ž˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์„ธ์š”:

ํŒŒ์ผ ๊ฒฝ๋กœ: .github/workflows/pr-review.yml

ํŒŒ์ผ ๋‚ด์šฉ:

name: AI PR Review

on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Claude PR Review
        uses: chanani/lib-claude-reviewer@main
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

๐Ÿ’ก ์ฐธ๊ณ :

  • GITHUB_TOKEN์€ GitHub๊ฐ€ ์ž๋™ ์ œ๊ณตํ•˜๋ฏ€๋กœ Secrets์— ์ถ”๊ฐ€ํ•  ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค
  • language๋Š” ๊ธฐ๋ณธ๊ฐ’ ko(ํ•œ๊ตญ์–ด), ์˜์–ด ์›ํ•˜๋ฉด language: 'en' ์ถ”๊ฐ€
  • file_extensions๋Š” ๊ธฐ๋ณธ๊ฐ’ .java,.kt,.xml,.gradle, ๋ณ€๊ฒฝ ์›ํ•˜๋ฉด ์ถ”๊ฐ€

๋‹จ๊ณ„ 3: Git์— ์ปค๋ฐ‹ & ํ‘ธ์‹œ

git add .github/workflows/pr-review.yml
git commit -m "Add AI PR review workflow"
git push

์™„๋ฃŒ! ์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค โœ…

  • โœ… PR ์ƒ์„ฑ/์—…๋ฐ์ดํŠธ ์‹œ ์ž๋™์œผ๋กœ Claude ์ฝ”๋“œ ๋ฆฌ๋ทฐ
  • โœ… PR์— ์ž๋™์œผ๋กœ ๋ฆฌ๋ทฐ ๋Œ“๊ธ€ ์ž‘์„ฑ
  • โœ… .java, .kt, .xml, .gradle ํŒŒ์ผ๋งŒ ๋ฆฌ๋ทฐ

[Gitea Actions ์„ค์ •]

โš ๏ธ ์ค‘์š”: Gitea Actions๋Š” GitHub Actions์™€ ํ˜ธํ™˜๋˜๋Š” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค!

Gitea Actions์—์„œ ์ž๋™ PR ๋ฆฌ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜ 2๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:


๋‹จ๊ณ„ 1: Gitea Secrets์— API Key ์ถ”๊ฐ€
  1. Gitea ์ €์žฅ์†Œ ํŽ˜์ด์ง€๋กœ ์ด๋™
  2. Settings โ†’ Secrets โ†’ Actions
  3. "Add Secret" ํด๋ฆญ
  4. ์•„๋ž˜ ์ •๋ณด ์ž…๋ ฅ:
    • Name: ANTHROPIC_API_KEY
    • Secret: ๋‹น์‹ ์˜ Claude API ํ‚ค (์˜ˆ: sk-ant-...)
  5. Add secret ํด๋ฆญ

๋‹จ๊ณ„ 2: Workflow ํŒŒ์ผ ์ƒ์„ฑ (ํ•„์ˆ˜!)

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์•„๋ž˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์„ธ์š”:

ํŒŒ์ผ ๊ฒฝ๋กœ: .gitea/workflows/pr-review.yml (๋˜๋Š” .github/workflows/pr-review.yml)

ํŒŒ์ผ ๋‚ด์šฉ:

name: AI PR Review

on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Claude PR Review
        uses: chanani/lib-claude-reviewer@main
        with:
          gitea_url: 'https://gitea.example.com'  # โš ๏ธ ํ•„์ˆ˜: ๋‹น์‹ ์˜ Gitea ์„œ๋ฒ„ URL๋กœ ๋ณ€๊ฒฝ
          github_token: ${{ secrets.GITEA_TOKEN }}  # Gitea Access Token
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}  # โš ๏ธ ํ•„์ˆ˜: Secrets์— ๋“ฑ๋ก ํ•„์š”

๋‹จ๊ณ„ 3: Git์— ์ปค๋ฐ‹ & ํ‘ธ์‹œ
git add .gitea/workflows/pr-review.yml
git commit -m "Add AI PR review workflow for Gitea"
git push

์™„๋ฃŒ! Gitea์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค โœ…
  • โœ… PR ์ƒ์„ฑ/์—…๋ฐ์ดํŠธ ์‹œ ์ž๋™์œผ๋กœ Claude ์ฝ”๋“œ ๋ฆฌ๋ทฐ
  • โœ… PR์— ์ž๋™์œผ๋กœ ๋ฆฌ๋ทฐ ๋Œ“๊ธ€ ์ž‘์„ฑ
  • โœ… .java, .kt, .xml, .gradle ํŒŒ์ผ๋งŒ ๋ฆฌ๋ทฐ

API ๋ ˆํผ๋Ÿฐ์Šค

ClaudeReviewer

๋นŒ๋” ๋ฉ”์„œ๋“œ

  • githubToken(String) - GitHub Personal Access Token ๋˜๋Š” Gitea Access Token (ํ•„์ˆ˜)
  • anthropicApiKey(String) - Anthropic API Key (ํ•„์ˆ˜)
  • repoName(String) - ์ €์žฅ์†Œ ์ด๋ฆ„ "owner/repo" (ํ•„์ˆ˜)
  • prNumber(int) - Pull Request ๋ฒˆํ˜ธ (ํ•„์ˆ˜)
  • giteaUrl(String) - Gitea ์„œ๋ฒ„ URL (Gitea ์‚ฌ์šฉ ์‹œ๋งŒ ํ•„์š”, ์˜ˆ: https://gitea.example.com)
  • model(String) - Claude ๋ชจ๋ธ (๊ธฐ๋ณธ๊ฐ’: claude-sonnet-4-5-20250929)
  • language(String) - ๋ฆฌ๋ทฐ ์–ธ์–ด "ko" ๋˜๋Š” "en" (๊ธฐ๋ณธ๊ฐ’: ko)
  • fileExtensions(String) - ๋ฆฌ๋ทฐํ•  ํŒŒ์ผ ํ™•์žฅ์ž (๊ธฐ๋ณธ๊ฐ’: .java,.kt,.xml,.gradle)
  • maxTokens(int) - ์ตœ๋Œ€ ํ† ํฐ ์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: 2000)

ํ”Œ๋žซํผ ๊ฐ์ง€

  • giteaUrl์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด โ†’ Gitea ๋ชจ๋“œ๋กœ ์ž‘๋™
  • giteaUrl์ด ์—†์œผ๋ฉด โ†’ GitHub ๋ชจ๋“œ๋กœ ์ž‘๋™ (๊ธฐ๋ณธ๊ฐ’)

๋ฐฐํฌ ๊ฐ€์ด๋“œ

Maven Central์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ PUBLISHING.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์š”๊ตฌ์‚ฌํ•ญ

  • Java 21+
  • Gradle 8.x+

๋ผ์ด์„ผ์Šค

MIT License

๊ธฐ์—ฌ

Pull Request๋Š” ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

์ง€์›

์ด์Šˆ๊ฐ€ ์žˆ๋‹ค๋ฉด GitHub Issues์— ๋“ฑ๋กํ•ด์ฃผ์„ธ์š”.

About

Cluade AI Code Review Library

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages