| name | code-review |
| description | 基于 CodeSpirit 项目规范进行系统化代码审查。检查安全、数据库、异步编程、多语言、DTO、控制器、服务类等规范。当用户需要审查代码、检查代码质量、或准备提交代码时使用。 |
代码审查 Skill
快速开始
CodeSpirit 代码审查采用三级优先级体系:
- 🔴 严重级别:必须修复(安全、数据库、异步编程、反射调用)
- 🟡 重要级别:影响质量(多语言、DTO、控制器、服务类)
- 🟢 建议级别:最佳实践(注释、命名、性能优化)
审查工作流程
步骤 1:确定审查范围
明确需要审查的文件列表(通过 git status、文件列表等方式)。
步骤 2:执行严重级别检查(🔴 优先)
按优先级依次检查,发现严重问题立即标记:
-
安全与数据保护 → 📖 详细规范
-
数据库与迁移 → 📖 详细规范
-
异步编程 → 📖 详细规范
-
反射调用(新增)
-
依赖注入 → 📖 详细规范
-
包管理 → 📖 详细规范
步骤 3:执行重要级别检查(🟡)
-
多语言国际化 → 📖 详细规范
-
DTO 规范 → 📖 详细规范
-
控制器规范 → 📖 详细规范
-
服务类规范 → 📖 详细规范
-
EF Core 查询优化
步骤 4:执行建议级别检查(🟢)
- 代码注释 - 复杂逻辑添加注释
- 命名规范 → 📖 详细规范
- 时间处理 - 优先使用 UTC 时间
- 序列化 - 统一使用 Newtonsoft.Json
- 性能优化 - 投影查询、分布式锁、事件驱动
步骤 5:生成审查报告
使用 report-template.md 生成结构化审查报告:
- 📊 统计摘要(优先显示)- 问题数量和优先级
- 🔴 严重问题 - 必须修复
- 🟡 重要问题 - 影响质量
- 🟢 建议改进 - 最佳实践
📌 特别注意:权限系统
CodeSpirit 采用自动权限生成,大部分情况无需配置 [Permission] 特性。
✅ 不要标记为问题
- 标准 CRUD 操作缺少
[RequirePermission](框架自动生成)
❌ 应标记为问题
- 需要权限继承但未用
[Permission] 配置
- 公开 API 未标记
[AllowAnonymous]
示例:
[HttpPost]
[DisplayName("创建用户")]
public async Task<ActionResult> Create(CreateDto dto) { }
[HttpPut("{id}")]
[Permission(AllowInheritedPermissions = new[] { "users_manage" })]
[DisplayName("更新用户")]
public async Task<ActionResult> Update(long id, UpdateDto dto) { }
常见问题速查
反射调用扩展方法 🔴
method?.Invoke(null, new object[] { services, configuration });
this.ConfigureStandardInfrastructureServices(services, configuration, (s, c) =>
{
s.AddCodeSpiritMultiTenant(c);
});
硬编码字符串 🟡
return SuccessResponse("操作成功!");
return SuccessResponse(message: _localizer["Common.Save"].Value);
阻塞调用 🔴
var result = _repository.GetListAsync().Result;
var result = await _repository.GetListAsync();
多租户隔离缺失 🔴
public class Question : AuditableEntityBase<long> { }
public class Question : AuditableEntityBase<long>, IMultiTenant
{
public string TenantId { get; set; } = string.Empty;
}
审查技巧
按文件类型审查
- 实体:接口实现、多租户、审计字段、雪花ID
- DTO:验证特性、Display特性、多语言
- 服务:基类继承、依赖注入、XML注释、异步
- 控制器:特性标记、返回类型、权限控制
使用工具辅助
- Grep/搜索:搜索
Task.Result、Task.Wait()、method.Invoke、硬编码字符串
- ReadLints:检查编辑过的文件的 linter 错误
- 规则文档:参考 24 个规则文件的详细说明
相关资源