团队代码规范一致性审查专家

2 浏览
0 试用
0 购买
Nov 12, 2025更新

本提示词专为团队代码规范审查设计,能够系统化检查代码命名、注释、结构等多维度规范一致性。通过深度分析代码结构,匹配行业标准规范,精准识别违规项并提供具体修正建议。支持多种编程语言规范标准,输出结构化审查报告,帮助团队建立统一的编码风格,提升代码可维护性和团队协作效率。适用于日常代码审查、项目质量评估和团队规范培训等多种场景。

[ { "问题分类": "命名规范", "问题描述": "类名使用了小写开头的 userManager。根据规范,构造函数/类名应使用 PascalCase。", "代码位置": "行 24(class userManager),行 49(new userManager())", "严重程度": "严重", "修正建议": "将类名改为 UserManager,并确保实例化时使用 new UserManager()。", "规范依据": "Airbnb JavaScript Style Guide - Naming Conventions: Use PascalCase for class names; ESLint: new-cap" }, { "问题分类": "命名规范", "问题描述": "方法名 Load 使用了 PascalCase。常规函数/方法应采用 camelCase。", "代码位置": "行 29(async Load(id))", "严重程度": "一般", "修正建议": "将方法名改为 load。", "规范依据": "Airbnb JavaScript Style Guide - Naming Conventions: Use camelCase when naming functions; ESLint: camelcase(命名一致性)" }, { "问题分类": "命名规范", "问题描述": "参数 user_id 使用了 snake_case,团队应统一为 camelCase。", "代码位置": "行 9(user_id),行 10-11(cache.has/get(user_id)),行 13('...'+ user_id),行 15(id: user_id),行 19(cache.set(user_id, ...))", "严重程度": "一般", "修正建议": "将 user_id 重命名为 userId,并同步更新函数体内的引用。", "规范依据": "Airbnb JavaScript Style Guide - Naming Conventions: Use camelCase for variables and functions; ESLint: camelcase" }, { "问题分类": "格式问题", "问题描述": "箭头函数参数未加括号:r => setTimeout(r, ms)。Airbnb 要求始终为箭头函数参数加括号。", "代码位置": "行 6(r => setTimeout(r, ms))", "严重程度": "一般", "修正建议": "改为 (resolve) => setTimeout(resolve, ms)。", "规范依据": "Airbnb JavaScript Style Guide - Arrow Functions: Always include parentheses around arguments; ESLint: arrow-parens ("always")" }, { "问题分类": "命名规范", "问题描述": "箭头函数参数命名过于简短(r),可读性较低。", "代码位置": "行 6(r)", "严重程度": "轻微", "修正建议": "将 r 重命名为 resolve 或更具语义的名称。", "规范依据": "Airbnb JavaScript Style Guide - Naming Conventions: Be descriptive with naming" }, { "问题分类": "格式问题", "问题描述": "字符串拼接构建 URL:'https://api.example.dev/users/' + user_id。ES6 环境应使用模板字符串。", "代码位置": "行 13(字符串拼接)", "严重程度": "一般", "修正建议": "使用模板字符串:https://api.example.dev/users/${userId}。", "规范依据": "Airbnb JavaScript Style Guide - Strings: Use template strings instead of concatenation; ESLint: prefer-template" }, { "问题分类": "结构问题", "问题描述": "声明了未使用的常量 endpoint,属于冗余代码。", "代码位置": "行 13(const endpoint = ...)", "严重程度": "一般", "修正建议": "删除未使用的 endpoint,或在后续逻辑中实际使用该变量。", "规范依据": "ESLint: no-unused-vars; 通用最佳实践:移除死代码提升可维护性" }, { "问题分类": "结构问题", "问题描述": "构建 URL 时直接插入外部参数,潜在路径注入风险(尽管当前未使用该 endpoint)。", "代码位置": "行 13(使用 user_id 拼接 URL)", "严重程度": "一般", "修正建议": "在构建 URL 时对路径段进行编码处理,如 encodeURIComponent(userId)。", "规范依据": "OWASP Cheat Sheet Series - Input Validation; 通用安全最佳实践" }, { "问题分类": "结构问题", "问题描述": "构造函数中通过 logger || console 设置默认值,建议使用默认参数语法以统一风格。", "代码位置": "行 25-26(this.logger = logger || console)", "严重程度": "轻微", "修正建议": "改为 constructor(logger = console) { this.logger = logger; }。", "规范依据": "Airbnb JavaScript Style Guide - Functions: Use default parameter syntax" }, { "问题分类": "结构问题", "问题描述": "默认导出为实例(new userManager()),可能降低可测试性与可扩展性。", "代码位置": "行 49(export default new userManager();)", "严重程度": "轻微", "修正建议": "建议默认导出类(UserManager),在使用处实例化;或同时导出实例与类,便于测试替换。", "规范依据": "Airbnb JavaScript Style Guide - Modules: Prefer default export for a single entity; 通用可测试性最佳实践" }, { "问题分类": "结构问题", "问题描述": "使用 for...of 与外部可变变量累加(score),不够函数式且易引入副作用;Airbnb 倾向使用数组方法(map/reduce)。", "代码位置": "行 39(let score = 0),行 41-44(for...of 累加逻辑)", "严重程度": "轻微", "修正建议": "使用 reduce 聚合得分,避免外部可变状态:const score = (user.posts || []).reduce((acc, p) => acc + ((p.title || '').length > 3 ? 2 : 1), user.role === 'admin' ? 10 : 0)。", "规范依据": "Airbnb JavaScript Style Guide - Iterators & Generators: Prefer array methods over loops" }, { "问题分类": "注释问题", "问题描述": "导出函数 fetchUserData 缺少参数/返回值说明的结构化注释。", "代码位置": "行 9(export async function fetchUserData ...)", "严重程度": "轻微", "修正建议": "添加 JSDoc 风格注释,说明参数 userId、includePosts 的类型与含义,以及返回值结构和缓存行为。", "规范依据": "Airbnb JavaScript Style Guide - Comments: Add comments where helpful; 行业最佳实践:JSDoc" }, { "问题分类": "注释问题", "问题描述": "导出函数 calculateScore 缺少参数/返回值的注释说明。", "代码位置": "行 37(export function calculateScore(user))", "严重程度": "轻微", "修正建议": "添加 JSDoc 注释,描述 user 对象期望字段、评分规则概要和返回值类型。", "规范依据": "Airbnb JavaScript Style Guide - Comments; 行业最佳实践:JSDoc" }, { "问题分类": "注释问题", "问题描述": "类 userManager 未提供类职责与方法用途的注释。", "代码位置": "行 24(class userManager)", "严重程度": "轻微", "修正建议": "在类定义前添加注释,说明该类的职责(日志使用、加载用户数据)及关键方法用途。", "规范依据": "Airbnb JavaScript Style Guide - Comments: Explain code intent where necessary" }, { "问题分类": "命名规范", "问题描述": "常量 cache 语义较泛,建议更具体以提升可读性。", "代码位置": "行 4(const cache = new Map();)", "严重程度": "轻微", "修正建议": "重命名为 userCache 或 usersCache 以体现用途。", "规范依据": "Airbnb JavaScript Style Guide - Naming: Be descriptive with naming" }, { "问题分类": "结构问题", "问题描述": "存在多处“魔法数字”(5、10、2、1),降低可读性与可配置性。", "代码位置": "行 14(delay(5)),行 40(+= 10),行 43(? 2 : 1)", "严重程度": "轻微", "修正建议": "将这些常量提取为具名常量,例如 const DELAY_MS = 5、const ADMIN_BONUS = 10、const TITLE_LONG_SCORE = 2、const TITLE_SHORT_SCORE = 1。", "规范依据": "通用最佳实践:避免魔法数字;ESLint: no-magic-numbers(可选启用)" }, { "问题分类": "结构问题", "问题描述": "类属性 maxRetries 未被使用,可能属于冗余配置或未实现功能。", "代码位置": "行 27(this.maxRetries = 3)", "严重程度": "轻微", "修正建议": "若无使用场景,删除该属性;若为后续使用,请在方法中引用或注释说明用途。", "规范依据": "通用最佳实践:移除未使用代码;ESLint: no-unused-vars(属性一般不触发,但建议保持整洁)" }, { "问题分类": "结构问题", "问题描述": "缓存 Map 无容量限制或过期策略,可能导致长期运行内存增长风险(性能考虑)。", "代码位置": "行 4(const cache = new Map();),行 10-11、19(cache 访问)", "严重程度": "一般", "修正建议": "引入简单的过期策略(TTL)或最大容量并采用最近最少使用(LRU)淘汰;或使用成熟的缓存库以统一策略。", "规范依据": "通用性能与可维护性最佳实践" } ]

[ { "问题分类": "命名规范", "问题描述": "函数名使用混合大小写(getUser),不符合 PEP8 要求的 snake_case 命名规则,且与模块内其他标识符的下划线风格不一致。", "代码位置": "第15行函数定义;第38行函数调用", "严重程度": "一般", "修正建议": "将函数名更改为 get_user,并同步更新所有调用处与引用;保持参数与返回类型不变。", "规范依据": "PEP8 Naming Conventions — Function and Method Names(函数和方法使用 lower_case_with_underscores)" }, { "问题分类": "命名规范", "问题描述": "变量名过于简略,影响可读性与可维护性:循环变量和推导式使用单字母 u,实例变量使用缩写 rb。", "代码位置": "第17-18行循环变量 'u';第29-30行推导式变量 'u';第37行变量 'rb'", "严重程度": "轻微", "修正建议": "将循环/推导式变量 'u' 更名为 'user';将 'rb' 更名为 'report_builder';保持语义清晰、与上下文一致。", "规范依据": "PEP8 Naming Conventions — Variable Names(变量使用有描述性的名称,除计数器外避免过短)" }, { "问题分类": "注释问题", "问题描述": "缺少模块级文档字符串(module docstring),不利于描述文件用途与对外接口。", "代码位置": "文件开头(第1行之前)", "严重程度": "一般", "修正建议": "在文件开头添加模块文档字符串("""..."""),简要说明模块职责、主要类/函数以及入口(main)。", "规范依据": "PEP257 Docstring Conventions;PEP8 — Documentation Strings(为公共模块提供文档字符串)" }, { "问题分类": "注释问题", "问题描述": "缺少公共类与函数/方法的文档字符串:User 类、getUser 函数、ReportBuilder.init、ReportBuilder.build、main。", "代码位置": "第9行类 User;第15行函数 getUser;第24行方法 init;第28行方法 build;第35行函数 main", "严重程度": "一般", "修正建议": "为上述公共实体添加文档字符串,包含:简要说明、参数(名称/类型/含义)、返回值、可能的副作用或日志输出。init 的参数说明可并入类的 docstring。", "规范依据": "PEP257 Docstring Conventions;PEP8 — Documentation Strings(为公共类、函数和方法提供合适的 docstring)" }, { "问题分类": "注释问题", "问题描述": "类 ReportBuilder 的文档字符串使用三单引号('''...'''),与 PEP257 推荐的三重双引号不一致。", "代码位置": "第23行类 ReportBuilder 的文档字符串", "严重程度": "轻微", "修正建议": "将文档字符串改为三重双引号("""..."""),并确保首行为简要摘要句,必要时补充细节段落。", "规范依据": "PEP257 Docstring Conventions(使用三重双引号);PEP8 — Docstrings" }, { "问题分类": "格式问题", "问题描述": "顶层定义之间空行数量不足:class User 与后续函数定义之间仅有一行,应为两行。", "代码位置": "第14-15行之间(class User 之后、def getUser 之前)", "严重程度": "一般", "修正建议": "在 class User 之后增加至两个空行,以分隔顶层定义。", "规范依据": "PEP8 — Blank Lines(顶层类/函数定义之间使用两个空行;flake8 E302)" }, { "问题分类": "格式问题", "问题描述": "顶层定义之间空行数量不足:def getUser 与后续类定义之间仅有一行,应为两行。", "代码位置": "第21-22行之间(def getUser 之后、class ReportBuilder 之前)", "严重程度": "一般", "修正建议": "在 def getUser 之后增加至两个空行,保持顶层定义分隔一致。", "规范依据": "PEP8 — Blank Lines(顶层类/函数定义之间使用两个空行;flake8 E305)" }, { "问题分类": "格式问题", "问题描述": "顶层定义之间空行数量不足:class ReportBuilder 与后续函数定义之间仅有一行,应为两行。", "代码位置": "第34-35行之间(class ReportBuilder 之后、def main 之前)", "严重程度": "一般", "修正建议": "在 class ReportBuilder 之后增加至两个空行。", "规范依据": "PEP8 — Blank Lines(顶层类/函数定义之间使用两个空行;flake8 E305)" }, { "问题分类": "格式问题", "问题描述": "顶层函数定义之后空行不足:def main 之后到模块级代码(if name == 'main':)之间仅有一行,建议两行以提高可读性。", "代码位置": "第41-42行之间(def main 之后、if name == 'main': 之前)", "严重程度": "一般", "修正建议": "在 def main 之后补足至两个空行(共两行空行)再开始模块级代码。", "规范依据": "PEP8 — Blank Lines(类/函数定义之后建议两个空行;flake8 E305)" }, { "问题分类": "格式问题", "问题描述": "部分代码行长度可能超过 PEP8 建议的最大 79 字符,影响可读性与换行显示。", "代码位置": "第30行(长名称统计表达式);第36行(users 列表字面量)", "严重程度": "一般", "修正建议": "使用括号进行隐式换行或拆分为多行:例如在第30行使用临时变量或将条件部分换行;在第36行将列表元素分行书写,每个元素独立一行。", "规范依据": "PEP8 — Maximum Line Length(源码行不超过 79 字符;文档字符串/注释不超过 72 字符)" }, { "问题分类": "结构问题", "问题描述": "在启用 from future import annotations 的前提下仍使用 typing.List/Dict/Optional,类型注解风格不统一,建议采用内置泛型与联合类型以简化与统一。", "代码位置": "第4行导入 typing;第15行函数签名;第28行方法签名", "严重程度": "轻微", "修正建议": "将 List[User] 替换为 list[User],Dict[str, int] 替换为 dict[str, int],Optional[User] 替换为 User | None;同时移除对 List、Dict、Optional 的导入。", "规范依据": "PEP 585 — Type Hinting Generics In Standard Collections;PEP 604 — Union Types;PEP8 与 PEP484(类型注释的一致性与可读性建议)" } ]

[ { "问题分类": "格式问题", "问题描述": "使用了通配符导入(java.util.),不符合显式导入的通用规范要求,降低可读性并可能引入命名冲突风险。", "代码位置": "第3行 import java.util.", "严重程度": "一般", "修正建议": "将通配符导入替换为明确类导入:import java.util.Map; import java.util.HashMap; import java.util.Objects; 并保持导入分组与排序一致(静态导入、java.、javax.、第三方包)。", "规范依据": "Google Java Style Guide 3.3.1(Import statements: No wildcard imports)" }, { "问题分类": "注释问题", "问题描述": "公开方法缺少Javadoc,未对参数、返回值、异常、线程安全约束及安全考虑进行说明,影响可读性与维护性。", "代码位置": "第19行 registerUser(String userId, String plain); 第33行 verify(String userId, String input)", "严重程度": "一般", "修正建议": "为所有public方法补充Javadoc,包含@param、@return、可能的@throws说明;对密码处理的安全约束(如哈希算法、盐使用)和线程安全策略进行明确说明。", "规范依据": "Google Java Style Guide 7(Javadoc); 7.3(Method comments)" }, { "问题分类": "安全规范", "问题描述": "密码哈希使用单次SHA-256且无工作因子,不符合密码存储最佳实践,易受暴力破解和彩虹表攻击。", "代码位置": "第40-44行 private byte[] hash(String value, byte[] salt)", "严重程度": "严重", "修正建议": "采用专用口令哈希算法(PBKDF2、bcrypt、scrypt或Argon2),使用随机盐(16-32字节)并设置足够迭代/成本(例如PBKDF2-HMAC-SHA256≥310k迭代或依据性能基准),同时持久化算法参数(盐、迭代、算法标识)随哈希一起存储。", "规范依据": "OWASP Password Storage Cheat Sheet; NIST SP 800-63B §5.1.1.2(Memorized Secrets); OWASP ASVS V2.1" }, { "问题分类": "安全规范", "问题描述": "注册时生成的salt未持久化,校验时使用new byte[16]代替真实salt,导致哈希不可验证且安全性失效。", "代码位置": "第25-29行(salt生成与未存储);第36行(校验使用new byte[16])", "严重程度": "严重", "修正建议": "将salt与哈希一起持久化(例如存储结构包含hash、salt、算法、迭代),校验时读取对应用户的salt并用于哈希计算,再进行恒定时间比较。", "规范依据": "OWASP Password Storage Cheat Sheet(Store salt with hash); NIST SP 800-63B §5.1.1.2" }, { "问题分类": "结构问题", "问题描述": "使用非线程安全的HashMap存储凭据,且仅registerUser方法加synchronized,verify未同步,存在竞态与可见性问题。", "代码位置": "第17行 userHashStore;第19行 synchronized registerUser;第33行 verify", "严重程度": "一般", "修正建议": "使用线程安全容器(ConcurrentHashMap)并确保读写操作具备一致的同步策略;或在类级别明确不可并发访问并在Javadoc中说明。", "规范依据": "Java Concurrency in Practice(线程安全容器与同步原则); Effective Java(3rd)Item 82(Prefer concurrency utilities to synchronized)" }, { "问题分类": "结构问题", "问题描述": "捕获过于宽泛的Exception并仅记录消息,未记录堆栈信息;错误路径返回空字节数组可能导致下游逻辑误判或掩盖问题。", "代码位置": "第45-47行 catch (Exception e) { LOG.severe("hash error: " + e.getMessage()); return new byte[0]; }", "严重程度": "一般", "修正建议": "捕获具体异常(如NoSuchAlgorithmException、NullPointerException),使用LOG.log(Level.SEVERE, "hash error", e)记录堆栈;错误时通过抛出受检/非受检异常或返回可表示失败的类型(如Optional)而非空数组。", "规范依据": "SEI CERT ERR08-J(Catch specific exceptions); Google Java Style Guide 6.2(Exceptions)" }, { "问题分类": "格式问题", "问题描述": "使用魔法数字16表示salt长度,缺少含义表达和集中管理。", "代码位置": "第25行 new byte[16];第36行 new byte[16]", "严重程度": "轻微", "修正建议": "引入命名常量:private static final int SALT_LENGTH = 16; 在所有相关位置使用该常量。", "规范依据": "Clean Code(避免魔法数字的最佳实践); Google Java Style Guide 5.2.4(常量命名与可读性)" }, { "问题分类": "格式问题", "问题描述": "单行if语句未使用大括号,降低一致性与可维护性,易在后续修改中引入错误。", "代码位置": "第21行 if (plain == null || plain.isBlank()) return false;;第35行 if (stored == null) return false;", "严重程度": "一般", "修正建议": "为所有控制语句使用大括号:if (...) { return false; }。", "规范依据": "Google Java Style Guide 4.1.1(Braces are used for all control structures)" }, { "问题分类": "命名规范", "问题描述": "同类语义的参数命名不一致(plain、input、value);常量命名不够语义化(WEAK)。影响可读性与一致性。", "代码位置": "第19行 参数plain;第33行 参数input;第40行 参数value;第16行 常量WEAK", "严重程度": "轻微", "修正建议": "统一命名语义:plainPassword / passwordInput / password;将WEAK重命名为WEAK_PASSWORD_PATTERN以提升表达性。", "规范依据": "Google Java Style Guide 5.2(Naming); 5.2.4(Constant names)" }, { "问题分类": "格式问题", "问题描述": "日志使用字符串拼接,不利于结构化日志和性能(日志级别过滤前仍会拼接);错误日志未使用参数化形式记录异常。", "代码位置": "第23行 LOG.warning("weak password for " + userId);;第46行 LOG.severe("hash error: " + e.getMessage());", "严重程度": "轻微", "修正建议": "使用参数化日志:LOG.log(Level.WARNING, "weak password for userId={0}", new Object[]{userId}); 记录异常时:LOG.log(Level.SEVERE, "hash error", e)。", "规范依据": "OWASP Logging Cheat Sheet(避免敏感信息及结构化日志); Java Util Logging 指南(使用参数化日志与异常传入)" }, { "问题分类": "结构问题", "问题描述": "verify方法未对输入参数input进行空值前置校验,可能将NPE延迟到哈希过程,降低错误定位性与一致性。", "代码位置": "第33行 public boolean verify(String userId, String input)", "严重程度": "轻微", "修正建议": "在方法入口进行一致的空值校验:Objects.requireNonNull(input, "input"); 与registerUser的参数校验保持一致性。", "规范依据": "Google Java Style Guide 6.1(Method design); Effective Java(对参数进行前置条件校验的最佳实践)" } ]

示例详情

解决的问题

让你的代码评审从“人工主观”升级为“标准化、自动化、可追踪”的规范一致性审查。通过这条提示词,AI将以资深审查专家的角色,覆盖多语言规范,快速产出清晰的结构化报告(问题分类、位置、严重程度、修复建议、规范参考),在提交/合并前精准发现命名、注释、格式与结构问题;降低反复修改与沟通成本;建立统一编码标准与质量门槛;帮助新人快速对齐团队风格;让评审更客观高效、可度量可复用,最终显著提升交付速度与代码可维护性。

适用用户

技术负责人/架构师

制定统一编码规范与审查规则,周期性质量评估,快速识别风险模块并推动团队整改。

代码审查工程师/资深开发

一键审查合并请求,按严重程度生成修改清单,批量反馈到提交人,显著缩短评审时间。

初中级开发/新入职成员

对照报告自查命名与注释,按建议修正,减少返工与被退回,迅速融入团队编码风格。

特征总结

一次性审查命名、注释与格式,轻松定位不一致项,并标注具体位置便于快速修复。
自动匹配行业与团队标准,精准识别违规项,附上可直接应用的修正建议与参考。
支持多语言项目,前后端统一风格,一键切换规范模板,不同仓库也能快速落地。
生成结构化审查报告,按问题类型与严重程度排序,团队整改与复盘更有章法。
深度分析代码结构可维护性,提示缩进、空行、命名等细节优化方向,长期降本。
自定义审查重点与阈值,灵活设置例外规则,减少无效提醒,让沟通更高效。
无缝融入评审、验收与培训流程,帮助新人快速上手,编码风格持续统一与稳定。
批量审查提交记录,快速筛出高风险文件与模块,为发布前的质量闸门提供依据。

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥20.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 633 tokens
- 4 个可调节参数
{ 代码片段 } { 编程语言 } { 规范标准 } { 审查重点 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
限时免费

不要错过!

免费获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59