
关于
GitHub 推送前深度审计:清除垃圾文件、死代码、安全漏洞和优化问题。逐行检查每个文件的生产就绪状态
name: codebase-audit-pre-push description: "GitHub推送前的深度审计:清除垃圾文件、死代码、安全漏洞和优化问题。逐行检查每个文件的生产就绪状态。" category: development risk: safe source: community date_added: "2026-03-05"
推送前代码库审计
作为高级工程师,你正在将代码推送到GitHub之前进行最终审查。仔细检查所有内容,发现问题立即修复。
何时使用此技能
- 用户请求“审计代码库”或“推送前审查”
- 首次推送到GitHub之前
- 将仓库设为公开之前
- 生产部署前审查
- 用户要求“清理代码”或“优化所有内容”
你的职责
逐文件审查整个代码库。仔细阅读代码。立即修复问题。不要只是记录问题——直接进行必要的更改。
审计流程
1. 清理垃圾文件
首先查找不应出现在GitHub上的文件:
立即删除这些文件:
- 系统文件:
.DS_Store、Thumbs.db、desktop.ini - 日志:
*.log、npm-debug.log*、yarn-error.log* - 临时文件:
*.tmp、*.temp、*.cache、*.swp - 构建输出:
dist/、build/、.next/、out/、.cache/ - 依赖:
node_modules/、vendor/、__pycache__/、*.pyc - IDE文件:
.idea/、.vscode/(先询问用户)、*.iml、.project - 备份文件:
*.bak、*_old.*、*_backup.*、*_copy.* - 测试产物:
coverage/、.nyc_output/、test-results/ - 个人文件:
TODO.txt、NOTES.txt、scratch.*、test123.*
关键——检查密钥:
.env文件(绝不应被提交)- 包含以下内容的文件:
password、api_key、token、secret、private_key *.pem、*.key、*.cert、credentials.json、serviceAccountKey.json
如果在代码中发现密钥,标记为严重阻断问题。
2. 修复 .gitignore
检查 .gitignore 文件是否存在且内容完整。如果缺失或不完整,更新它以包含上述所有垃圾文件模式。确保 .env.example 存在且只有键名没有值。
3. 审计每个源文件
逐一检查每个代码文件:
死代码(立即删除):
- 被注释掉的代码块
- 未使用的 import/require
- 未使用的变量(声明但从未使用)
- 未使用的函数(定义但从未调用)
- 不可达代码(
return之后、if (false)内部) - 重复逻辑(多处相同代码——合并)
代码质量(边查边修):
- 模糊命名:
data、info、temp、thing→ 重命名为描述性名称 - 魔法数字:
if (status === 3)→ 提取为命名常量 - 调试语句:删除
console.log、print()、debugger - TODO/FIXME 注释:要么解决要么删除
- TypeScript
any:添加正确类型或解释为何使用any - JavaScript 中使用
===代替== - 超过50行的函数:考虑拆分
- 嵌套超过3层的代码:用提前返回重构
逻辑问题(关键):
- 缺少 null/undefined 检查
- 对可能为空的数组进行操作
- 未被 await 的异步函数
- 没有
.catch()或 try/catch 的 Promise - 可能的无限循环
- switch 语句缺少
default
4. 安全检查(零容忍)
密钥: 搜索硬编码的密码、API密钥和令牌。它们必须放在环境变量中。
注入漏洞:
- SQL:查询中禁止字符串拼接——只使用参数化查询
- 命令注入:禁止对用户输入使用
exec() - 路径遍历:未经验证不得使用用户输入的文件路径
- XSS:禁止对用户数据使用
innerHTML或dangerouslySetInnerHTML
认证/授权:
- 密码使用 bcrypt/argon2 哈希(绝不使用 MD5 或明文)
- 受保护路由检查认证状态
- 授权检查在服务端进行,而非仅在UI中
- 无 IDOR:验证用户拥有其访问的资源
数据暴露:
- API响应不泄露不必要的信息
- 错误消息不暴露堆栈跟踪或数据库详情
- 列表接口有分页
依赖:
- 运行
npm audit或等效工具 - 标记严重过时或有漏洞的包
5. 可扩展性检查
数据库:
- N+1 查询:循环内有数据库调用 → 使用 JOIN 或批量查询
- WHERE/ORDER BY 列缺少索引
- 无界查询:添加 LIMIT 或分页
- 避免
SELECT *:指定列名
API设计:
- 重操作(如邮件、报告、文件处理)→ 移至后台队列
- 公开接口添加速率限制
- 对频繁读取的数据添加缓存
- 外部调用设置超时
代码:
- 无全局可变状态
- 清理事件监听器(避免内存泄漏)
- 大文件使用流式处理而非全部加载到内存
兼容工具
Claude CodeCursor
标签
AI与机器学习