用途
该技能用于按照 Sentry 工程实践执行代码审查,适合在审查 Pull Request、检查代码变更或对代码质量提供反馈时使用。
主要能力
审查清单包含以下方面:
识别问题:查找代码变更中的运行时错误(潜在异常、空指针问题、越界访问)、性能问题(无界的 O(n²) 操作、N+1 查询、不必要的内存分配)、副作用(影响其他组件的非预期行为变更)、向后兼容性(没有迁移路径的破坏性 API 变更)、ORM 查询(复杂 Django ORM 带来的意外查询性能)、安全漏洞(注入、XSS、访问控制缺口、密钥泄露)。
设计评估:判断组件交互是否合乎逻辑、变更是否与现有项目架构一致、是否与当前需求或目标存在冲突。
测试覆盖:每个 PR 都应有适当的测试覆盖,包括业务逻辑的功能测试、组件交互的集成测试、关键用户路径的端到端测试。需验证测试覆盖实际需求和边界情况,避免测试代码中出现过多分支或循环。
长期影响:当变更涉及数据库模式修改、API 契约变更、采用新框架或库、性能关键代码路径、安全敏感功能时,应标记给高级工程师审查。
使用方式
反馈指南要求:语气上保持礼貌与共情,提供可操作的建议而非模糊批评,不确定时以提问方式表达(如“你是否考虑过……?”)。批准方面:仅剩小问题时即可批准,不要因风格偏好阻塞 PR。核心理念是降低风险,而非追求完美代码。
技能还列出常见需标记的模式,并给出正反示例:
Python/Django 中 N+1 查询问题:
# 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 中 useEffect 依赖缺失问题:
// Bad: Missing dependency in useEffect
useEffect(() => {
fetchData(userId);
}, []); // userId not in deps
// Good: Include all dependencies
useEffect(() => {
fetchData(userId);
}, [userId]);
安全方面 SQL 注入风险:
# 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])
适用场景
适用于 Sentry 项目的代码审查,也可作为代码审查流程与反馈规范的参考。
限制
资料未提供该技能的安装方式、收费模式、支持平台等具体信息,暂未提供。