代码审计与安全检查

每次commit自动扫一遍 —— 安全漏洞无处藏

安全自动化代码质量

这个模板干嘛用的?

每次 git commit 之前,AI 自动帮你扫一遍代码 —— 安全漏洞、代码坏味道、依赖风险,全给你揪出来。

不是那种跑完一堆 warning 你看都不想看的工具。AI 会告诉你哪些是真正要改的、为什么要改、怎么改,分好优先级,给出修复代码。

三个模板覆盖三个场景:提交前审计、依赖扫描、代码质量检查。可以单独用,也可以串成流水线。

代码安全的现状

你知道应该做安全检查,但每次都觉得「先上线再说」。等到真出了安全事故才回头看,发现那个 SQL 注入漏洞其实很明显。不是你不想查,是查起来太费劲了 —— 工具报 200 个 warning,你根本分不清哪些重要。

模板一:Git Commit Hook 审计

在 commit 之前自动触发审计。有严重问题直接拦住,不让有漏洞的代码进仓库。

Git Commit Hook 审计 · TASK 模板 TASK
## TASK: Pre-Commit 代码审计

### 触发条件
每次 git commit 前自动执行(pre-commit hook)

### 审计范围
仅审计本次 commit 中修改的文件(git diff --staged)

### 检查项目
1. 安全漏洞
   - 硬编码的密钥、token、密码
   - SQL 注入风险(拼接 SQL 语句)
   - XSS 风险(未转义的用户输入)
   - 不安全的反序列化
2. 敏感信息
   - .env 文件是否被误提交
   - 私钥、证书文件
   - 内部 API 地址泄露

### 输出格式
- 严重程度分级:BLOCK(阻止提交)/ WARN(警告)/ INFO(建议)
- 每个问题:文件路径 + 行号 + 问题描述 + 修复建议
- BLOCK 级别问题存在时,commit 被阻止并提示修复

模板二:依赖漏洞扫描

第三方依赖是安全隐患的重灾区。这个模板帮你定期扫描依赖树,看看有没有已知漏洞。

依赖漏洞扫描 · TASK 模板 TASK
## TASK: 依赖安全扫描

### 触发条件
每周一早上 9:00 自动执行 + package.json / requirements.txt 变更时触发

### 扫描目标
- Node.js: package-lock.json
- Python: requirements.txt / Pipfile.lock
- Go: go.sum

### 执行步骤
1. 解析依赖树,列出所有直接和间接依赖
2. 查询 CVE 数据库和 GitHub Advisory
3. 按 CVSS 评分排序
4. 检查是否有可用的修复版本

### 输出格式
- 表格:依赖名 | 当前版本 | 漏洞编号 | 严重程度 | 修复版本
- 高危漏洞单独标注,附修复命令(如 npm audit fix)
- 末尾给出「本周依赖健康度」评分:A/B/C/D

模板三:代码质量检查

不只是安全问题 —— 代码可读性、复杂度、重复度也很重要。技术债越欠越多,这个模板帮你定期盘点。

代码质量检查 · TASK 模板 TASK
## TASK: 代码质量审查

### 触发条件
每次 PR 提交时自动执行

### 检查维度
1. 复杂度
   - 单个函数圈复杂度 > 10 标记警告
   - 嵌套深度 > 4 层标记警告
2. 可读性
   - 函数命名是否语义清晰
   - 魔法数字和硬编码字符串
   - 注释覆盖率(复杂逻辑必须有注释)
3. 重复代码
   - 检测相似代码片段(> 10 行相似)
   - 建议提取公共函数或工具类
4. 测试覆盖
   - 新增代码是否有对应测试
   - 核心逻辑的边界条件是否覆盖

### 输出格式
- 总评一句话:这个 PR 质量如何
- 按维度分块列出问题
- 每个问题给出改进后的代码示例
- 结论:Approve / Request Changes / 建议讨论

配套 Skill 配置

代码审计模板需要文件读取和 Git 操作权限。下面是 pre-commit hook 的配置参考:

代码审计 Git Hook 配置
skill_config:
  name: "code-audit"
  description: "代码审计 - Pre-commit 自动检查"
  version: "1.0"

  skills:
    - skill: file-ops
      settings:
        scope: "git-staged"
        read_only: true
        file_types: [".py", ".js", ".ts", ".go", ".java"]

    - skill: git-integration
      settings:
        hook: "pre-commit"
        block_on: ["BLOCK"]
        allow_bypass: false

  output:
    format: "terminal"
    color: true
    save_report: "./audit-reports/${DATE}.md"

  error_handling:
    timeout: 60
    on_timeout: "warn-and-allow-commit"
🔒 建议把 allow_bypass 设成 false —— 不然每次有问题你都会选择跳过,审计就白做了。实在急着提交可以用 git commit --no-verify,但心里要有数。

相关资源

代码审计只是开发流程的一环,这些也值得看看:

这篇模板对你有帮助吗?