99 lines
2.5 KiB
Markdown
99 lines
2.5 KiB
Markdown
# 13-快速检查清单
|
||
|
||
> Python 开发日常自查
|
||
|
||
---
|
||
|
||
## 开工前 Check
|
||
|
||
- [ ] 代码在云电脑内编写(**代码不出研发云**)
|
||
- [ ] 技术选型符合统一技术栈要求
|
||
- [ ] Git 仓库已创建,`.gitignore` 已配置
|
||
- [ ] 需求文档已评审通过
|
||
|
||
---
|
||
|
||
## 编码中 Check
|
||
|
||
### Python 编码
|
||
- [ ] 命名:类用驼峰,函数/变量全小写+下划线
|
||
- [ ] 缩进:4 个空格,无 Tab
|
||
- [ ] 每行 ≤ 80 字符
|
||
- [ ] 导入顺序:标准库 → 第三方 → 应用
|
||
- [ ] 禁止隐式相对导入
|
||
- [ ] 函数有文档字符串(Args/Returns/Raises)
|
||
- [ ] `if foo is None:` 而非 `== None`
|
||
- [ ] 禁止循环中用 `+` 拼接字符串
|
||
- [ ] 常量在左、变量在右
|
||
|
||
### 安全
|
||
- [ ] 无硬编码密码/密钥
|
||
- [ ] 口令哈希已加盐(盐 ≥ 8 字节随机数,≥ 50000 次迭代)
|
||
- [ ] 使用强随机数
|
||
- [ ] 日志不输出敏感信息
|
||
- [ ] 用户输入已验证(服务端验证)
|
||
- [ ] 错误消息不暴露系统信息
|
||
- [ ] 无后门代码/调试入口
|
||
|
||
### 数据库
|
||
- [ ] 表名/字段名全小写+下划线
|
||
- [ ] 表和字段已添加注释
|
||
- [ ] 无外键
|
||
- [ ] WHERE 条件列有索引
|
||
- [ ] 无 `SELECT *`
|
||
- [ ] DELETE/UPDATE 带 WHERE 条件
|
||
- [ ] 无隐式类型转换
|
||
- [ ] DDL 已提前通知 DBA
|
||
|
||
---
|
||
|
||
## 提交前 Check
|
||
|
||
### Git
|
||
- [ ] Commit message 格式:`type(scope): subject` + `%workItemId`
|
||
- [ ] 已精简合并 commit(≤ 5 个)
|
||
- [ ] 无敏感信息(密码/密钥/账号)
|
||
- [ ] 无二进制文件 > 10MB
|
||
- [ ] 无 PDF/DOC/压缩包/音视频
|
||
- [ ] 第三方依赖来自制品库(非直接提交)
|
||
|
||
### 测试
|
||
- [ ] 单元测试已编写
|
||
- [ ] 测试覆盖率达标
|
||
- [ ] 无致命/严重缺陷未关闭
|
||
|
||
---
|
||
|
||
## 流水线 Check
|
||
|
||
- [ ] 代码质量扫描通过(无阻断/严重级问题)
|
||
- [ ] 代码安全扫描通过
|
||
- [ ] 构建成功
|
||
- [ ] 制品已上传统一制品库
|
||
|
||
---
|
||
|
||
## 部署前 Check
|
||
|
||
- [ ] 测试报告已提交
|
||
- [ ] 部署计划/实施方案已准备
|
||
- [ ] 回退方案已准备
|
||
- [ ] 制品已从快照版本转为正式版本
|
||
- [ ] K8S 镜像未使用 `latest` 标签
|
||
- [ ] 部署审批已通过
|
||
|
||
---
|
||
|
||
## 安全红线(一票否决)
|
||
|
||
| 问题 | 后果 |
|
||
|------|------|
|
||
| 代码中包含硬编码密码/密钥 | 禁止上线 |
|
||
| 使用弱加密算法(MD5/DES/SHA1) | 禁止上线 |
|
||
| 日志打印用户密码/敏感信息 | 禁止上线 |
|
||
| 存在高危安全漏洞未修复 | 禁止上线 |
|
||
| 未通过代码安全扫描 | 禁止上线 |
|
||
| 代码存储在外部云服务 | 违规 |
|
||
| 未经审批部署到生产环境 | 违规 |
|
||
| 直接连接生产数据库 | 违规 |
|