# full-chain code review **Repository Path**: maoning325/full-chain-code-review ## Basic Information - **Project Name**: full-chain code review - **Description**: AI代码审查 不只是普通代码走查,而是通过智能分析代码变更、识别潜在缺陷、规范问题和风险点,自动生成结构化审查报告,帮助团队从“人工逐行检查”升级为更高效、更一致、更可追踪的代码质量管控流程。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-25 - **Last Updated**: 2026-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI Code Audit Orchestrator 全链路自动化代码安全审计平台,结合 Java 静态分析引擎、规则化安全检测、候选漏洞二次确认和报告生成能力,支持从源码接入到审计报告归档的完整流程。 ## 功能概览 - Java 静态分析引擎:基于 Spring Boot 3.3 和 JavaParser 构建项目模型、调用链、注解、MyBatis XML 和配置模型。 - 安全规则检测:内置命令执行、路径穿越、HTTP Header 操纵、MyBatis SQL 注入、资源泄漏、SSRF、反序列化等规则。 - 候选漏洞二次确认:支持对 BMAD 或其他工具产出的 `security-candidates.json` 做定向追踪和确认。 - CLI 编排:提供 `analyze`、`audit`、`verify-security-candidates` 等命令,兼容自动化流水线。 - 审计平台 UI:提供项目管理、源码快照、新建审计、报告查看、用户管理等页面。 - 报告产物:输出 JSON、Markdown、HTML 等审计结果,便于机器处理和人工复核。 ## 架构 ```text ┌──────────────────────────────┐ │ TypeScript CLI 编排层 │ │ src/cli.ts │ └──────────────┬───────────────┘ │ HTTP / 进程调用 ▼ ┌──────────────────────────────┐ ┌──────────────────────────────┐ │ Java 静态分析引擎 │ │ AI / BMAD 审计流程 │ │ analyzer/ Spring Boot │ │ 候选问题、人工复核辅助 │ │ 默认端口 17880 │ └──────────────┬───────────────┘ └──────────────┬───────────────┘ │ ▼ ▼ JSON / Markdown / HTML FINAL_AUDIT_REPORT.md ┌──────────────────────────────┐ │ Vue 前端审计平台 │ │ frontend/ │ │ 项目管理 / 新建审计 / 报告页 │ └──────────────────────────────┘ ``` ## 技术栈 | 模块 | 技术 | | --- | --- | | 静态分析引擎 | Java 17, Spring Boot 3.3, JavaParser | | 编排 CLI | TypeScript, Node.js, Commander.js | | 前端平台 | Vue 3, Vue Router, Vite, TypeScript, ECharts | | 规则定义 | YAML | | 报告格式 | JSON, Markdown, HTML | | 测试 | JUnit 5, Vitest | | AI 审计 | Claude CLI + BMAD Method | ## 快速开始 ### 前置条件 - Java 17+ - Maven 3.8+ - Node.js 18+ - Claude CLI,可选,用于 AI 审计流程 ### 安装依赖 ```bash npm install cd frontend npm install cd .. ``` ### 构建 ```bash # 构建 TypeScript CLI npm run build # 构建前端 cd frontend npm run build cd .. # 构建 Java 分析引擎 cd analyzer mvn package -DskipTests cd .. ``` ## CLI 使用 ### 配置项目 编辑 `config/projects_config.json`: ```json { "java_home": "C:\\Program Files\\Java\\jdk-17", "projects": [ { "name": "my-project", "path": "/path/to/checkout", "git_address": "https://github.com/org/repo.git", "code_branch": "main" } ], "global_output_dir": "/path/to/reports" } ``` `java_home` 为可选字段。未配置时使用系统 `PATH` 中的 JDK;配置后会自动设置 `JAVA_HOME` 并将 `bin` 目录前置到 `PATH`。 ### 常用命令 ```bash # 仅运行静态分析 npx tsx src/cli.ts analyze # 完整审计流程:静态分析 + AI 审查 + 报告整合 npx tsx src/cli.ts audit # 指定单个项目 npx tsx src/cli.ts analyze --project-name my-project # 仅运行某条规则 npx tsx src/cli.ts analyze --rule-id mybatis-dollar-sql-injection # 跳过静态分析,使用已有结果 npx tsx src/cli.ts audit --skip-analysis # 跳过 AI 审查 npx tsx src/cli.ts audit --skip-claude ``` 也可以使用 PowerShell 一键脚本: ```powershell .\AutoCodeAudit.ps1 ``` ## 审计平台 UI 平台后端由 `analyzer` 提供,API 位于 `/api/platform/**`。现有 CLI 和分析 API 仍保持兼容。 ### 默认本地地址 ```text http://127.0.0.1:17880 ``` ### 默认管理员账号 ```text admin / admin123 ``` 团队或生产部署时,请在首次启动前设置 `AUDIT_BOOTSTRAP_ADMIN_PASSWORD`,或覆盖配置项 `audit.bootstrap.admin-password`。 ### 界面说明 前端界面已中文化,并参考 TDesign 企业级后台设计体系进行视觉优化: - 登录页:浅灰背景、顶部品牌栏、右侧标准登录表单、TDesign 蓝主按钮。 - 项目管理:项目列表、最新审计状态、风险数量、项目删除。 - 项目详情:源码快照、审计任务列表、报告入口。 - 新建审计:支持 ZIP 上传、Git 仓库、已有源码快照,支持选择扫描规则和分析参数。 - 报告页:风险统计、ECharts 图表、筛选器、Finding 表格、右侧详情面板。 - 用户管理:管理员可创建用户、更新角色和状态。 ### 前端开发模式 ```bash cd frontend npm run dev ``` Vite 默认代理 `/api` 到: ```text http://127.0.0.1:17880 ``` 开发时通常需要同时启动后端: ```bash cd analyzer mvn spring-boot:run ``` ### 生产式同源托管 ```bash cd frontend npm run build cd ../analyzer mvn spring-boot:run ``` 当 `frontend/dist` 存在时,Spring Boot 会托管构建后的前端页面,API 请求保持同源。 Maven 打包时也会将 `frontend/dist` 复制到 Spring Boot classpath 的 `static/` 下,便于打包后的服务直接提供 UI。 ## REST API ### 分析 API | 端点 | 方法 | 说明 | | --- | --- | --- | | `/api/health` | GET | 健康检查 | | `/api/analyze` | POST | 执行分析 | | `/api/jobs/{id}` | GET | 查询任务状态 | | `/api/jobs/{id}/findings` | GET | 获取发现列表 | | `/api/jobs/{id}/artifacts` | GET | 获取报告产物 | | `/api/security-candidates/verify/jobs` | POST | 提交候选漏洞二次确认任务 | | `/api/security-candidates/verify/jobs/{id}` | GET | 查询候选确认任务状态 | | `/api/security-candidates/verify/jobs/{id}/results` | GET | 获取候选确认结果 | | `/api/shutdown` | POST | 关闭分析引擎 | ### 平台 API 平台 API 位于 `/api/platform/**`,包括认证、项目、源码包、审计任务、报告和用户管理等能力。 ## 规则系统 规则使用 YAML 声明式定义,每条规则包含 source、sink、guard、评分策略和报告模板等信息。 示例: ```yaml id: mybatis-dollar-sql-injection name: MyBatis ${} SQL 注入 category: SQL_INJECTION defaultSeverity: CRITICAL sources: [...] sinks: [...] guards: [...] scoring: {...} ``` 内置规则: | 规则 ID | 检测内容 | 默认级别 | | --- | --- | --- | | `command-exec-whitelist-bypass` | 命令执行白名单绕过 | CRITICAL | | `file-download-path-traversal` | 文件下载路径穿越 | HIGH | | `http-header-manipulation` | HTTP Header 操纵 | HIGH | | `mybatis-dollar-sql-injection` | MyBatis `${}` SQL 注入 | CRITICAL | | `resource-leak` | 资源未关闭或泄漏 | MEDIUM | | `server-side-request-forgery` | 服务端请求伪造 SSRF | HIGH | | `unsafe-deserialization` | 不安全反序列化 | CRITICAL | ## 分析结果 每次分析通常生成: - `*-security-findings.json`:结构化 JSON,便于程序处理。 - `*-security-findings.md`:Markdown 报告,便于人工阅读。 - 平台任务报告:可通过 UI 下载 Markdown 或 HTML 产物。 Finding 主要字段: | 字段 | 说明 | | --- | --- | | `ruleId` | 触发规则 | | `severity` | 严重级别 | | `source` | 污点来源,包括文件、行号、符号 | | `sink` | 危险汇点 | | `callChain` | 调用链 | | `guards` | 已识别的安全防护 | | `confidence` | 置信度评分和证据 | | `recommendation` | 修复建议 | ## BMAD 候选漏洞二次确认 BMAD 全量代码走查可以在项目目录生成 `security-candidates.json`。随后可使用 Analyzer 对候选安全问题做定向调用追踪和二次确认: ```powershell npx tsx src/cli.ts verify-security-candidates ` --config-file config/projects_config.json ` --project-name spring-mybatis-demo ` --candidate-file reports/bmad/security-candidates.json ` --output-dir reports/security-verification ` --candidate-timeout-ms 60000 ` --max-trace-depth 8 ` --max-trace-nodes 500 ``` 参数建议: | 参数 | 默认建议 | 说明 | | --- | --- | --- | | `--candidate-timeout-ms` | `60000` | 单个候选的最大验证耗时,超时不会影响其他候选 | | `--max-trace-depth` | `8` | 单条调用链最大追踪深度 | | `--max-trace-nodes` | `500` | 单个候选最多访问的方法节点数 | 输出文件: - `-candidate-verification.json`:结构化二次确认结果。 - `-candidate-verification.md`:人工可读确认报告。 候选确认状态: | 状态 | 含义 | | --- | --- | | `confirmed` | 已追踪到外部输入可到达危险 sink,且未识别到有效防护 | | `likely` | 存在可疑链路或防护可能被绕过,需要人工结合上下文确认 | | `unconfirmed` | 当前静态追踪证据不足 | | `false_positive` | 识别到有效防护,候选更可能是误报 | | `analysis_failed` | 单候选验证失败或超时 | ## MySQL 配置示例 ```yaml spring: datasource: url: jdbc:mysql://127.0.0.1:3306/audit_platform?useSSL=false&serverTimezone=UTC username: audit password: change-me ``` ## 项目结构 ```text analyzer/ Java 静态分析引擎和平台后端 frontend/ Vue 前端审计平台 src/ TypeScript CLI 编排层 rules/ YAML 安全规则定义 config/ 项目配置 prompts/ AI 审计提示词 reports/ 报告输出目录 tests/ TypeScript 测试 AutoCodeAudit.ps1 PowerShell 一键脚本 ``` ## 测试 ```bash # TypeScript CLI 测试 npm run test # 前端测试 cd frontend npm run test # Java 测试 cd analyzer mvn test ``` ## License Private,内部使用。