dubbo-go
dubbo-go copied to clipboard
[FEATURE] build a PR review workflow in github action
✅ 验证清单
🎯 功能描述
build a PR review workflow in github action
📋 使用场景
PR Review
⚖️ 复杂性与风险评估
No response
🔗 外部依赖
No response
📚 附加信息
No response
Grok suggestion:
以下是一些**免费的**、可以在 GitHub Actions 中配置并自动触发的代码审查工具,特别适合在 GitHub Pull Request (PR) 流程中使用的工具。这些工具要么完全免费,要么提供开源项目的免费使用选项,并且可以轻松集成到 GitHub Actions 工作流中。以下是详细总结,基于当前可用的信息:
---
### 1. CodiumAI PR-Agent
- **描述**: 一个开源的 AI 驱动工具,专注于自动化 PR 审查,提供代码建议、PR 描述生成和合规性检查。它使用大语言模型(如 GPT-4 或兼容模型),但对开源仓库提供免费使用。
- **特点**:
- 自动分析 PR 变更,生成代码改进建议。
- 支持检查代码是否符合仓库指南。
- 可生成 PR 摘要或改进描述。
- 对开源项目完全免费,私人仓库可能需要付费计划。
- **GitHub Actions 配置**:
- 通过 GitHub Marketplace 安装或手动添加 Actions YAML 文件。
- 配置简单的触发事件(如 `pull_request`)。
- 如果使用自托管模型,可能需要 API 密钥(但开源仓库通常免配置)。
- **触发方式**:
```yaml
name: PR Agent
on:
pull_request:
types: [opened, synchronize]
jobs:
pr-agent:
runs-on: ubuntu-latest
steps:
- uses: Codium-ai/pr-agent@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
- 链接: CodiumAI PR-Agent
- 免费说明: 开源仓库免费,易于设置,社区支持活跃。
2. LlamaPReview
- 描述: 一个新兴的免费工具,利用链式推理(Chain-of-Thought)LLM 进行 PR 审查,专注于发现潜在 bug 和代码问题。特别适合希望一键安装的团队。
-
特点:
- 完全免费,无需额外 API 密钥。
- 提供详细的 PR 评论,突出潜在 bug。
- 支持自动化触发,安装简单。
-
GitHub Actions 配置:
- 通过 GitHub Marketplace 一键安装。
- 配置触发事件(如 PR 创建或更新)。
- 示例 YAML:
name: LlamaPReview on: pull_request: types: [opened, edited, synchronize] jobs: review: runs-on: ubuntu-latest steps: - uses: QuasarByte/llama-preview@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }}
- 链接: LlamaPReview
- 免费说明: 完全免费,专为开源项目设计,适合快速上手。
3. CodeQL (GitHub 官方)
- 描述: GitHub 提供的静态代码分析工具,内置于 GitHub Actions,特别适合检测安全漏洞和代码质量问题。虽然不是基于 GPT,但功能强大且免费。
-
特点:
- 检测常见的安全问题(如 SQL 注入、XSS)。
- 支持多种语言(C/C++、Java、Python、JavaScript 等)。
- 自动在 PR 上生成评论或问题。
- 对开源仓库完全免费,私人仓库在 GitHub Advanced Security 下可能需要付费。
-
GitHub Actions 配置:
- 使用 GitHub 提供的 CodeQL Action。
- 示例 YAML:
name: CodeQL Analysis on: pull_request: branches: [main] jobs: analyze: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: github/codeql-action/init@v3 with: languages: javascript,python - uses: github/codeql-action/analyze@v3
- 链接: CodeQL
- 免费说明: 开源仓库免费,GitHub 官方支持,适合安全和质量审查。
4. Reviewdog
- 描述: 一个轻量级的代码审查工具,支持集成多种静态分析工具(如 ESLint、Pylint)并在 PR 上添加评论。它不是 AI 驱动,但结合静态分析器可实现类似审查效果,且完全免费。
-
特点:
- 支持多种 linter 工具,生成 PR 注释。
- 轻量且高度可定制。
- 与 GitHub Actions 无缝集成。
-
GitHub Actions 配置:
- 配置 linter 和 Reviewdog Action。
- 示例 YAML(以 ESLint 为例):
name: Reviewdog on: pull_request: branches: [main] jobs: eslint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: reviewdog/action-eslint@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-check
- 链接: Reviewdog
- 免费说明: 完全免费,支持多种语言和 linter,适合轻量级审查。
5. Danger
- 描述: 一个自动化代码审查工具,支持自定义规则和脚本,允许在 PR 上添加评论。它不基于 GPT,但可以通过插件集成 AI 模型,且核心功能免费。
-
特点:
- 高度可定制,支持 Ruby、JavaScript 或 Python 脚本。
- 可检查代码规范、提交消息格式等。
- 直接在 PR 上添加评论。
-
GitHub Actions 配置:
- 配置 Danger Action,运行自定义规则。
- 示例 YAML:
name: Danger on: pull_request: types: [opened, synchronize] jobs: danger: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: danger/danger-js@11 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- 链接: Danger
- 免费说明: 核心功能免费,适合需要自定义审查规则的团队。
注意事项
- AI 工具限制: 像 CodiumAI PR-Agent 和 LlamaPReview 这样的 AI 工具可能依赖外部模型,免费版本可能有使用限制(如 API 调用次数)。但对开源项目通常足够。
- 静态分析 vs AI: CodeQL 和 Reviewdog 更适合检测明确的代码问题(如安全漏洞或风格问题),而 CodiumAI 和 LlamaPReview 提供更智能的语义审查。
-
触发配置: 所有工具都支持
on: pull_request事件,确保 PR 创建或更新时自动运行。 - 隐私: 使用 GitHub Secrets 存储任何 API 密钥(如 GITHUB_TOKEN),避免泄露。
- 扩展性: 如果需要更智能的审查,可以考虑结合免费工具和自托管 LLM(如 LLaMA),但需要更多配置。
推荐
- 简单上手: LlamaPReview(一键安装,完全免费)。
- 安全审查: CodeQL(GitHub 官方,适合安全检测)。
- 灵活性: Reviewdog 或 Danger(支持多种 linter 或自定义规则)。
- AI 驱动: CodiumAI PR-Agent(开源项目免费,智能建议)。
如果需要帮助配置某个工具的 YAML 文件或想深入探讨某个工具的优缺点,请告诉我!
下面是示例:
```markdown
- **项目背景**:
- 这是一个 Apache 项目(假设是 Java 项目,但如果你需要其他语言支持,可以调整)。
- 我是 committer,有权限提交 PR 和修改代码,但无法访问 GitHub 仓库的 Settings。
- GitHub Actions 已启用(假设如此,若未启用,我会通过邮件列表推动)。
- 目标是自动触发 PR 审查,优先使用免费工具(如 LlamaPReview、CodeQL 或 Reviewdog)。
- **要求**:
- 配置尽量简单,适合 Apache 项目的开源性质。
- 无需外部 API 密钥或 Secrets,只使用默认的 `GITHUB_TOKEN`。
- 能在 PR 创建或更新时触发。
- 提供代码审查反馈(如安全检查、风格问题或潜在 bug)。
请将 YAML 文件包裹在 `<xaiArtifact>` 标签中,包含一个唯一的 `artifact_id` 和合适的 `title`,并确保 `contentType` 为 `text/yaml`。如果有多个工具的配置建议,可以选择一个最适合的(如 LlamaPReview 或 CodeQL),或者提供多个 YAML 文件(每个用单独的 `<xaiArtifact>` 包裹)。完成后,我会通过 PR 提交到 `.github/workflows/`,并在邮件列表中讨论。
GPT 回复:
可以的 👍 群里如果只想用 **免费的**,又能在 **GitHub Action 里配置自动触发 code review**,其实已经有不少开源项目。整理几个常见的:
---
## 🚀 免费 + GitHub Action 可用的 AI Code Review 工具
### 1. **PR-Agent (CodiumAI 出品的开源版)**
* **地址**: [[CodiumAI/pr-agent](https://github.com/CodiumAI/pr-agent)](https://github.com/CodiumAI/pr-agent)
* **特点**:
* 完全开源,支持 GitHub Action 直接配置
* 在 PR 评论里输入 `/review`、`/improve` 就能触发 GPT 生成评审意见
* 也支持自动触发模式
* **成本**: 免费(需要自己提供 OpenAI API Key)
---
### 2. **[microsoft/gpt-review](https://github.com/microsoft/gpt-review)**
* **地址**: [microsoft/gpt-review](https://github.com/microsoft/gpt-review)
* **特点**:
* 微软官方项目,支持 GitHub Action 或 CLI
* 能分析 PR diff,并输出建议评论
* 支持 OpenAI / Azure OpenAI
* **成本**: 免费(同样需要 API Key)
---
### 3. **[agogear/chatgpt-pr-review](https://github.com/agogear/chatgpt-pr-review)**
* **地址**: [agogear/chatgpt-pr-review](https://github.com/agogear/chatgpt-pr-review)
* **特点**:
* 专门做成 GitHub Action 的 AI PR Review 工具
* 每次有人提 PR,Action 会跑一遍,把结果直接写成 PR 评论
* **成本**: 免费(依赖 OpenAI API Key)
---
### 4. **[cirolini/genai-code-review](https://github.com/cirolini/genai-code-review)**
* **地址**: [cirolini/genai-code-review](https://github.com/cirolini/genai-code-review)
* **特点**:
* 也是 GitHub Action 插件
* 支持配置模型(如 GPT-3.5、GPT-4)
* 会自动生成 review 评论,贴在 PR 下面
* **成本**: 免费(需要 API Key)
---
## ⚡ 总结
如果你要在群里推荐:
* **最活跃/成熟的**:`PR-Agent`
* **官方背景的**:`microsoft/gpt-review`
* **上手最简单的**:`agogear/chatgpt-pr-review` 或 `genai-code-review`
它们都是开源免费的,只是 **调用 GPT 时要自己出 API Key 的费用**。
---
写一个最小化的 GitHub Action 配置 yml,假设你用的是 PR-Agent 或类似工具(比如 cirolini/genai-code-review),只要能设置 secret(OPENAI_API_KEY)就能跑。
比如最简的例子(放到 .github/workflows/pr-review.yml):
name: AI PR Review
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
pr-review:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run AI PR Review
uses: cirolini/[email protected]
with:
openai_api_key: ${{ secrets.OPENAI_API_KEY }}
model: gpt-3.5-turbo
temperature: 0.2
🔑 使用说明
在 GitHub 仓库 Settings > Secrets and variables > Actions 里配置:
OPENAI_API_KEY(你的 OpenAI key 或 Azure OpenAI key)。
每次有人新建或更新 PR 时,Action 会自动触发。
运行后,它会把 GPT 的 review 评论直接写到 PR 下面。
@AlexStocks please give it to me