关于 code-review
面向 Sentry 项目的代码审查技能,帮助审查者评估正确性、安全性、性能、设计、测试覆盖率和长期影响。它强调可执行且礼貌的反馈,并依据风险决定是否批准。
主要功能
- 01检查运行时错误和性能风险
- 02审查副作用与 API 兼容性
- 03识别安全漏洞
- 04评估设计与项目约定
- 05检查测试和边界情况
- 06标记需高级工程师审查的变更
适用场景
- 01审查 Sentry 拉取请求中的缺陷
- 02评估变更的安全与性能风险
- 03检查测试覆盖率和兼容性影响
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ getsentry/ skills --skill code-review安装后在 Claude Code 中输入/code-review确认已加载。
详细介绍
Sentry 代码审查
审查 Sentry 项目代码时,请遵循以下准则。
审查清单
识别问题
在代码变更中查找以下问题:
- 运行时错误:潜在的异常、空指针问题、越界访问
- 性能:无界的 O(n²) 操作、N+1 查询、不必要的内存分配
- 副作用:影响其他组件的非预期行为变更
- 向后兼容性:没有迁移路径的破坏性 API 变更
- ORM 查询:查询性能出乎意料的复杂 Django ORM
- 安全漏洞:注入、XSS、访问控制缺失、密钥泄露
设计评估
- 组件之间的交互是否合乎逻辑?
- 变更是否符合现有项目架构?
- 是否与当前需求或目标存在冲突?
测试覆盖
每个 PR 都应有适当的测试覆盖:
- 针对业务逻辑的功能测试
- 针对组件交互的集成测试
- 针对关键用户路径的端到端测试
验证测试是否覆盖了实际需求和边界情况。避免在测试代码中出现过多的分支或循环。
长期影响
当变更涉及以下内容时,标记出来交由资深工程师审查:
- 数据库 schema 修改
- API 契约变更
- 采用新的框架或库
- 性能关键代码路径
- 安全敏感功能
反馈准则
语气
- 保持礼貌和共情
- 提供可操作的改进建议,而非含糊的批评
- 不确定时以提问的方式表达:“你是否考虑过……?”
批准
- 仅存在小问题时即可批准
- 不要因风格偏好而阻塞 PR
- 请记住:目标是降低风险,而非追求完美代码
常见需标记的模式
Python/Django
# Bad: N+1 query
for user in users:
print(user.profile.name) # Separate query per user
# Good: Prefetch related
users = User.objects.prefetch_related('profile')
TypeScript/React
// Bad: Missing dependency in useEffect
useEffect(() => {
fetchData(userId);
}, []); // userId not in deps
// Good: Include all dependencies
useEffect(() => {
fetchData(userId);
}, [userId]);
安全
# Bad: SQL injection risk
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
# Good: Parameterized query
cursor.execute("SELECT * FROM users WHERE id = %s", [user_id])
参考资料
评论
支持 Markdown