Ops Code Review — 运维代码审查
v1.0.11Code Review 安全扫描工具,实现自动化代码审计,支持多语言包括 Django/Python、React+TypeScript、PHP。 该工具可以自动识别代码仓库提交变更,调用安全扫描器进行规范检查和风险检测,并将报告推送至飞书群。 同时支持 post-commit hook 增量扫描和定时全量扫描。 关键词:Code Review SVN 安全扫描 Django React PHP 代码审计 代码扫描 安全检测 CI/CD 自动化
运行时依赖
安装命令
点击复制技能文档
Code Review Skill 首次使用前配置(必读)
- 设置环境变量
- 配置仓库信息
- 检查工具依赖
能力概览 功能 说明 🔍 增量扫描 post-commit 触发,只扫本次提交的文件 📋 全量扫描 每周定时,扫描整个仓库 🛠️ 多语言支持 Django / React+TS / PHP 🔴 问题分级 ERROR / WARNING / INFO 三级 🛠️ 修复建议 具体代码修改方案,不只是说"有问题" 📤 飞书推送 报告发送到配置的飞书群
环境变量说明 变量名 必填 说明 CODE_REVIEW_SVN_USER ✅ SVN 只读用户名 CODE_REVIEW_SVN_PASS ✅ SVN 密码 CODE_REVIEW_FEISHU_CHAT_ID ✅ 飞书群 chat_id(机器人 webhook 或群 ID) CODE_REVIEW_CONFIG ❌ config.json 路径,默认为 /tmp/code_review_config.json(建议使用受保护目录如 ~/.config/code-review/config.json)
使用方式 手动触发扫描 审计代码 incremental ops_api # 增量扫描(只扫变更) 审计代码 full gm # 全量扫描指定仓库 审计代码 fullall # 全量扫描所有仓库 审计代码 sync # 同步所有 SVN 仓库 审计代码 check-deps # 检查工具依赖
增量扫描流程(post-commit hook) 用户提交代码 ↓ SVN post-commit hook 触发 ↓ code_review.py incremental ↓ SVN Manager 获取本次变更文件 ↓ Analyzer 逐语言分析 ↓ Report Generator 生成飞书格式报告 ↓ 推送到飞书群
全量扫描流程(定时任务) 每周定时触发 ↓ code_review.py fullall ↓ 遍历所有仓库,checkout 全量代码 ↓ 按语言全量扫描 ↓ 生成报告推送飞书
工具依赖 工具 用途 安装命令 svn SVN 客户端 apt-get install subversion bandit Python 安全扫描 pip install --break-system-packages bandit pylint Python 代码检查 pip install --break-system-packages pylint npx 执行 ESLint npm install -g npx composer PHP 包管理器 下载安装脚本到 /tmp 后执行(不通过管道),最后清理安装文件 phpcs PHP 代码规范 composer global require squizlabs/php_codesniffer @typescript-eslint/ ESLint 的 TypeScript 解析器 npm install -g @typescript-eslint/parser @typescript-eslint/eslint-plugin typescript-eslint 首次使用前必须运行工具检查,确保所有依赖就绪。
SVN Hook 部署 生成 hook 脚本 code_review.py setup-hooks 部署步骤 在 SVN 服务器上找到仓库路径 将生成的 post-commit 脚本放到 hooks/ 目录 赋予执行权限:chmod +x hooks/post-commit 确保 SVN 服务器能访问本 skill 的 scripts 目录
定时任务配置(OpenClaw Cron) 推荐使用 OpenClaw 内置 cron,比服务器 crontab 更方便管理: { "schedule": { "kind": "cron", "expr": "0 3 1", "tz": "Asia/Shanghai" }, "payload": { "kind": "agentTurn", "message": "执行全量代码审计:\ncd /root/.openclaw/workspace/skills/code-review && python3 scripts/code_review.py fullall" }, "sessionTarget": "isolated" } 创建方式:告诉 OpenClaw "帮我创建一个每周一凌晨3点执行全量代码审计的定时任务"
报告示例 📊 代码审计报告 ━━━━━━━━━━━━━━━━━━ 🏷️ 仓库:运维后台后端 (Django) 📅 时间:2026-04-14 10:00 🔍 方式:🔄 增量扫描 📁 扫描文件:5 🐛 问题总数:3 🔴 严重/错误:1 🟡 警告:1 🟢 提示:1 ━━━━━━━━━━━━━━━━━━ 🔴 严重 | models/user.py:45 └ [CUST-105] 敏感信息明文存储 └ 🛠️ 修复:使用环境变量或密钥管理服务,不要明文存储 🟡 警告 | views/order.py:88 └ [CUST-311] 潜在 SQL 拼接风险 └ 🛠️ 修复:使用参数化查询,避免字符串拼接查询语句 🟢 提示 | utils/helper.py:12 └ [CUST-324] 弱随机数生成 └ 🛠️ 修复:使用 os.urandom 或 secrets 模块替代 random ━━━━━━━━━━━━━━━━━━ ⚙️ 由 OpenClaw 代码审计 Skill 自动生成
注意事项 敏感信息:SVN 账密和飞书群 ID 通过环境变量注入,不随 skill 上传 首次使用:先配置环境变量 → 创建 config.json → 复制到 /tmp/code_review_config.json → 运行 check-deps → 运行 install-deps → 运行 sync 工具缺失:记录在 /tmp/code_review_missing_tools.json,运行 install-deps 自动安装 扫描效率:全量扫描较慢,建议放在低峰时段 误报处理:如果某类问题确认为可接受的惯用写法,可以在报告中注明
ClawScan 安全自检清单 发布前用以下命令扫描所有脚本和引用文档: grep -rE "(oc_[a-f0-9]+|http://[a-z]+\.[a-z]+|:[0-9]{4,5})" \ scripts/ references/ --include=".py" --include=".md" --include=".yml" 触发 ClawScan flag 的模式(立即修复): oc_ 开头的真实飞书 ID → 改为 os.environ.get("CODE_REVIEW_FEISHU_CHAT_ID", "") 内网 hostname(如 zabbix.ops.qiyujoy.com)→ 改为 os.environ.get("ZABBIX_URL", "") 真实用户名默认值 → 改为 os.environ.get("XXX_USER", "") 空默认值 任何 Base64 编码或明显凭据格式的字符串 不触发 flag 的安全模式: {{ MYSQL_PASSWORD }}(Ansible Jinja2 变量注入) 、(尖括号包裹的占位符) os.environ.get("XXX", "") 空默认值 示例 URL 如 https://zabbix.example.com、http://your