- 多维度分析: 代码质量、安全漏洞、性能优化、最佳实践
- AI 驱动: 基于阿里云通义千问,提供专业的审查意见
- 灵活配置: 支持基础、安全、性能、综合等多种审查类型
- 实时反馈: 异步处理,快速响应
- GitLab: 完整的 MR 审查流程
- GitHub: PR 自动审查
- Gitee: 国内代码托管平台支持
- Webhook: 自动触发,无缝集成
- JWT 认证: 无状态认证,支持角色权限
- 签名验证: HMAC-SHA256 Webhook 验证
- 安全头: CSP、HSTS、XSS 防护
- 输入验证: 全面的参数校验和清理
- 配置管理: AI 模型、仓库配置
- 实时监控: 系统状态、审查统计
- 用户友好: 现代化 Web 界面
- Java: 17 或更高版本
- Maven: 3.6+
- 内存: 最小 512MB,推荐 1GB+
- API 密钥: 阿里云 DashScope API Key
# 1. 克隆项目
git clone https://github.com/yourusername/AstraLint.git
cd AstraLint
# 2. 配置环境变量
cp env.example .env
# 编辑 .env 文件,设置必要参数
# 3. 启动应用
mvn spring-boot:run- 主页: http://localhost:8080
- 代码审查: http://localhost:8080/secure-review.html
- 管理控制台: http://localhost:8080/admin/ (需要登录)
- 健康检查: http://localhost:8080/actuator/health
用户名: admin
密码: admin123
⚠️ 安全提醒: 生产环境请务必修改默认密码
创建 .env 文件并设置以下环境变量:
# AI 服务配置 (必需)
DASHSCOPE_API_KEY=your_dashscope_api_key_here
# JWT 安全配置 (必需)
JWT_SECRET=your_jwt_secret_at_least_256_bits_long
# 数据库配置 (生产环境)
DATABASE_PASSWORD=your_secure_password# GitLab 集成
GITLAB_URL=http://localhost:8929
GITLAB_TOKEN=your_gitlab_token
GITLAB_WEBHOOK_SECRET=your_webhook_secret
# GitHub 集成
GITHUB_TOKEN=your_github_token
GITHUB_WEBHOOK_SECRET=your_github_secret
# Gitee 集成
GITEE_TOKEN=your_gitee_token
GITEE_WEBHOOK_SECRET=your_gitee_secret
# 管理员账户
ADMIN_USERNAME=admin
ADMIN_PASSWORD=your_admin_passwordPOST /api/auth/login
Content-Type: application/json
{
    "username": "admin",
    "password": "admin123"
}响应:
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "username": "admin",
  "roles": ["ADMIN", "USER"]
}POST /api/code-review/quick
Content-Type: application/json
{
    "projectId": "my-project",
    "mergeRequestId": "123",
    "diffContent": "diff --git a/src/main.js...",
    "reviewType": "COMPREHENSIVE"
}POST /api/code-review/submit
Authorization: Bearer <your-jwt-token>
Content-Type: application/json
{
    "projectId": "my-project",
    "mergeRequestId": "123",
    "diffContent": "git diff content...",
    "reviewType": "SECURITY",
    "language": "java"
}- BASIC: 基础代码审查
- SECURITY: 安全漏洞检查
- PERFORMANCE: 性能优化建议
- COMPREHENSIVE: 综合全面审查
POST /api/webhook/gitlab
X-Gitlab-Event: Merge Request Hook
X-Gitlab-Token: your_webhook_secret
Content-Type: application/json
{
    "object_kind": "merge_request",
    "object_attributes": {
        "action": "opened",
        "iid": 123
    },
    "project": {
        "id": 456
    }
}POST /api/webhook/github
X-GitHub-Event: pull_request
X-Hub-Signature-256: sha256=<signature>
Content-Type: application/json
{
    "action": "opened",
    "pull_request": {
        "number": 123
    },
    "repository": {
        "full_name": "owner/repo"
    }
}# 构建镜像
docker build -t astralint:latest .
# 运行容器
docker run -d \
  --name astralint \
  -p 8080:8080 \
  -e SPRING_PROFILES_ACTIVE=prod \
  -e DASHSCOPE_API_KEY=your_api_key \
  -e JWT_SECRET=your_jwt_secret \
  -e DATABASE_PASSWORD=your_db_password \
  astralint:latest# 创建生产配置
export SPRING_PROFILES_ACTIVE=prod
export DATABASE_URL=jdbc:mysql://localhost:3306/astralint
export DATABASE_USERNAME=astralint_user
export DATABASE_PASSWORD=secure_passwordserver {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl http2;
    server_name yourdomain.com;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}# /etc/systemd/system/astralint.service
[Unit]
Description=AstraLint Code Review Service
After=network.target
[Service]
Type=simple
User=astralint
WorkingDirectory=/opt/astralint
ExecStart=/usr/bin/java -jar astralint.jar
EnvironmentFile=/opt/astralint/.env
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetAstraLint 采用现代化的 CI/CD 流程,确保代码质量和部署可靠性:
- 构建测试: 自动编译、单元测试、集成测试
- 代码质量: Checkstyle 静态分析
- 安全扫描: CodeQL 语义分析
- 单元测试: Mock 测试框架,覆盖核心业务逻辑
# 查看所有可用命令
make help
# 完整构建流程
make build
# 代码质量检查
make quality
# 运行测试
make test
# Docker 构建
make docker-build
# 完整 CI 流程
make ci-full详细的 CI/CD 配置和使用指南请参阅 CI_SETUP.md
AstraLint/
├── src/main/java/org/linshuai/astralint/
│   ├── controller/          # REST 控制器
│   │   ├── AuthController.java
│   │   ├── CodeReviewController.java
│   │   ├── AdminController.java
│   │   └── WebhookController.java
│   ├── service/             # 业务服务层
│   │   ├── AiCodeReviewService.java
│   │   ├── AiModelService.java
│   │   └── *Service.java
│   ├── config/              # 配置类
│   │   ├── SecurityConfig.java
│   │   ├── AiConfig.java
│   │   └── WebConfig.java
│   ├── entity/              # 实体类
│   ├── repository/          # 数据访问层
│   ├── dto/                 # 数据传输对象
│   └── util/                # 工具类
├── src/main/resources/
│   ├── application.yml      # 主配置文件
│   ├── application-dev.yml  # 开发环境配置
│   ├── application-prod.yml # 生产环境配置
│   └── static/              # 静态资源
├── src/test/java/           # Mock单元测试
│   ├── CodeVoyantApplicationTests.java
│   ├── service/             # 服务层测试
│   └── util/                # 工具类测试
└── SECURITY_FIXES.md        # 安全修复报告
# 启动开发环境
export SPRING_PROFILES_ACTIVE=dev
mvn spring-boot:run
# 运行Mock单元测试
mvn test
# 代码质量检查
mvn checkstyle:checkAstraLint 采用现代化的 Mock 测试框架,确保代码质量和业务逻辑的正确性:
- 22 个测试用例 全部通过
- Mock 对象: 使用 Mockito 模拟外部依赖
- 无 Spring 上下文: 轻量级单元测试,启动快速
- 业务逻辑验证: 专注核心功能测试
# 主应用测试
CodeVoyantApplicationTests.java
├── AI模型服务测试
├── 代码审查服务测试
├── GitHub服务测试
├── 工具方法测试
└── Mock对象验证
# 服务层测试
service/AiCodeReviewServiceTest.java
├── 代码差异处理测试
├── 文件路径解析测试
├── 变更行数计算测试
└── 异常处理测试
# GitHub服务测试
service/GitHubServiceTest.java
├── API URL构建测试
├── 响应处理测试
├── 配置验证测试
└── Mock HTTP调用测试
# 工具类测试
util/CodeReviewUtilsTest.java
├── 文件扩展名提取测试
├── 语言类型判断测试
├── 复杂度计算测试
├── 差异格式验证测试
└── 安全问题检测测试# 运行所有测试
mvn test
# 运行特定测试类
mvn test -Dtest=CodeVoyantApplicationTests
# 运行测试并生成覆盖率报告
mvn test jacoco:report
# 查看测试结果
open target/site/jacoco/index.html- 
新增审查规则 // 在 AiCodeReviewService 中添加 public String customCodeReview(String code) { // 自定义审查逻辑 } 
- 
新增 API 端点 // 在对应 Controller 中添加 @PostMapping("/custom") public ResponseEntity<String> customEndpoint(@Valid @RequestBody Request request) { // 端点逻辑 } 
- 
新增配置选项 # 在 application.yml 中添加 custom: feature: enabled: ${CUSTOM_FEATURE_ENABLED:false} 
| 安全方面 | 等级 | 说明 | 
|---|---|---|
| 认证授权 | A | JWT + 角色权限控制 | 
| 数据保护 | A | 环境变量 + 加密传输 | 
| 输入验证 | A | Bean Validation + XSS 防护 | 
| 网络安全 | A | CORS 限制 + 安全头 | 
| Webhook 安全 | A | HMAC-SHA256 签名验证 | 
- 
生产部署检查清单 - 修改默认管理员密码
- 配置强 JWT 密钥 (256 位+)
- 启用 HTTPS
- 配置 Webhook 签名验证
- 限制网络访问
 
- 
定期安全维护 - 更新依赖版本
- 轮换 API 密钥
- 审查访问日志
- 备份重要数据
 
详细安全信息请查看 安全修复报告
# 基础健康检查
curl http://localhost:8080/actuator/health
# 详细健康信息 (需要认证)
curl -H "Authorization: Bearer <token>" \
     http://localhost:8080/actuator/health/details# 应用指标
curl http://localhost:8080/actuator/metrics
# JVM 信息
curl http://localhost:8080/actuator/info# 生产环境日志配置
logging:
  level:
    org.linshuai.astralint: INFO
    org.springframework.security: WARN
  file:
    name: /var/log/astralint/application.log
  pattern:
    file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"# 团队代码审查工作流
1. 开发者提交 MR/PR
2. 自动触发 AI 审查
3. 生成详细审查报告
4. 团队评审和改进# 安全漏洞检测
curl -X POST http://localhost:8080/api/code-review/security \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "secure-app",
    "diffContent": "your code changes...",
    "reviewType": "SECURITY"
  }'# 性能分析和优化
curl -X POST http://localhost:8080/api/code-review/performance \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "high-perf-app",
    "diffContent": "performance critical code...",
    "reviewType": "PERFORMANCE"
  }'- Fork 本仓库
- 创建功能分支 (git checkout -b feature/amazing-feature)
- 提交更改 (git commit -m 'Add amazing feature')
- 推送分支 (git push origin feature/amazing-feature)
- 创建 Pull Request
- 遵循 Java 编码标准 (Google Java Style)
- 编写 Mock 单元测试,确保业务逻辑覆盖
- 更新相关文档
- 通过所有 CI 检查 (Checkstyle + CodeQL)
使用 GitHub Issues 报告 Bug,请包含:
- 详细的问题描述
- 复现步骤
- 环境信息 (Java 版本、操作系统)
- 相关日志和截图
- Spring Boot 3.2.0: 主应用框架
- Spring Security: 认证和授权
- Spring AI: AI 集成框架
- Spring Data JPA: 数据持久化
- H2/MySQL: 数据库支持
- JWT: 无状态认证
- Maven: 依赖管理
- HTML5: 现代标记语言
- CSS3: 响应式样式
- JavaScript ES6+: 现代前端脚本
- Font Awesome: 图标库
- Responsive Design: 移动端适配
- 阿里云 DashScope: 通义千问 AI 模型
- 灵活配置: 支持多 AI 提供商
- 模型管理: 动态切换和配置
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- Spring Boot - 强大的 Java 应用框架
- Spring AI - AI 集成框架
- 阿里云通义千问 - AI 模型服务
- 所有贡献者和使用者
- 📖 文档: 项目文档
- 🐛 问题: GitHub Issues
- 💬 讨论: GitHub Discussions
- 📧 邮件: support@astralint.com
⭐ 如果这个项目对你有帮助,请给个 Star!
Made with ❤️ by the AstraLint Team