@luke
用于批量导入、分页、筛选和去重代码,检查集合共享、视图修改、遍历变更及内存边界。
## 任务目标 请审查 Java 集合视图、转换与批量处理代码。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 集合处理链:优先检查当前集合异常或批量接口;留空时从切片、数组转换、去重与批量组装代码选择一条存在共享或变更行为的处理链。 工程与数据样例:读取集合创建和消费者、接口输入、业务键、分页与并发代码、依赖版本和现有边界测试,自动归纳数据规模证据。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 追踪原集合、subList 等视图、独立副本与缓存引用的拥有关系。 - 检查数组与列表转换、增删替换、遍历修改和对象加入后再变更的行为。 - 核对去重键、排序、重复项保留及分页计数的实际契约。 - 读取批次边界、全量加载、中间副本及并发共享路径,核对 JDK 与集合库能力。 ### 可采用的默认处理 - 默认只读给最小替换建议,不统一改 Stream、并行集合或不可变类型。 - 没有业务去重和顺序定义时保留输入顺序与重复语义,不按对象名称猜业务键。 - 没有规模记录时对持有副本和峰值内存列计算条件,不虚构耗时。 ### 必须有依据的事项 - 业务顺序、重复项或缺失关联应如何处理不明时,不选择会改变输出的去重或批量策略。 - 共享集合是否允许实时可见变更及复合操作原子性不明确时,不以换集合类决定并发语义。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付视图与副本、转换及遍历变更的可运行边界样例和关系说明。 - 无大规模数据时给批次与内存估算模板,列空集合、重复、空元素、源变更和并发验证条件。 ## 执行要求 适用范围:使用Java集合的业务模块;不可变集合工厂、Stream及第三方集合的能力需匹配JDK与依赖版本。 核对集合视图与原集合的关联,以及具体集合对遍历修改和数组转换的支持。 检查步骤: 1. 标出每个集合的创建者、拥有者、读写方和生命周期,区分原始数据、分页视图、独立副本和缓存引用;指出在哪一层修改可能影响另外一个业务调用。 2. 用真实调用路径检查分页切片、数组转列表和列表转数组,分别验证能否增加、删除、替换及强制转换;将依赖具体实现的假设改为明确契约。 3. 检查筛选与去重是否保持业务要求的稳定顺序,以及重复记录按哪个业务键识别;若对象在加入集合后继续修改,核对后续查找和结果是否仍正确。 4. 评估批量规模,区分一次全量加载、分批读取和流式处理;估算同时持有的数据副本与中间结果,容量结论注明来源,不根据循环层数臆测实际耗时。 5. 检查并发共享是否存在可见性或写入冲突,说明快照、加锁、分段处理等候选方案各自改变的语义;不要仅更换集合类就宣称业务操作整体原子。 6. 提供覆盖空集合、单元素、重复、空元素、源集合变更及大批量输入的验证用例;并发场景必须定义可重复观察的结果,记录未执行的压力验证。 ## 交付与验收 输出要求:交付集合关系说明、缺陷表、最小替换代码和验证矩阵。每处修改说明是否保留原有顺序、重复项和共享语义,另外列出峰值内存估算的假设与需要采集的指标。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 每项缺陷说明创建者、修改者、触发输入和受影响调用。 - 替换建议明确是否保留顺序、重复项、共享关系和批量失败语义。 - 验证包含源集合变更与边界输入,容量和并发结论注明实际执行范围。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
检查DTO、数据库查询、远程调用和集合中的空值传播,避免默认值掩盖未知状态。
## 任务目标 请排查 Java 空值传播与包装类型的边界问题。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 空值字段链:从当前空指针或字段异常定位输入;留空时优先扫描可空包装类型参与算术、判断和返回的位置,选择一条能追踪到请求或数据库来源的链路。 工程与字段资料:读取 DTO、实体、DDL、映射、远程接口契约和边界用例,自动确认字段可空性、序列化与实际 JDK 依赖。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 沿缺字段、显式 null、无记录和外部不完整响应追踪到业务运算及展示。 - 检索包装类型比较、自动拆箱、集合元素及默认值转换。 - 核对数据库可空、入口校验、字段注释和响应模型是否一致。 - 读取对象值相同但实例不同、正常值与空值的既有测试。 ### 可采用的默认处理 - 默认只读排查并给修复片段,不批量把 null 改为零或空字符串。 - 业务含义缺失时保留未知与合法零值的区别,已有契约优先。 - 对无源码依赖按声明契约和输入样例分析,不编造其内部返回保证。 ### 必须有依据的事项 - 空值代表未知、未提供、关闭还是无记录缺少业务定义时,不替用户决定默认值或改变公共字段类型。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付空值传播与包装比较的独立测试样例,以及入口、映射和运算层的校验选择表。 - 仅有字段定义时先完成空值语义疑点和边界请求矩阵,触发路径保留待验证。 ## 执行要求 适用范围:使用Java对象、包装类型和常见持久化框架的业务代码;具体映射和校验行为以JDK与依赖版本为准。 检查包装值比较和自动拆箱中的空值风险,不假定远程调用或数据库查询总能返回值。 检查步骤: 1. 画出目标字段从请求、查询或远程响应到业务计算、持久化及展示的传播路径,区分未提供、未知、无记录、零值和空字符串,不能把所有情况自动合并。 2. 找出可空值参与比较、算术、条件判断、方法返回和集合操作的位置,为每个疑点指出确切输入及可能结果;对无源码依赖只列待验证的接口契约。 3. 检查默认值是否改变业务事实,例如未知计数被展示成零、未提交配置被当成关闭;将需要拒绝输入、保留为空或业务兜底的场景分别列出理由。 4. 对对象比较与集合元素给出包含空值、相同值和不同实例的样例,检查现有结果是否稳定;避免只针对小范围数值验证而遗漏实际业务标识。 5. 提出最小修复,明确校验应放在入口、转换层还是计算前;说明对已有数据和外部调用方的影响,不为消除异常随意改变公共字段类型或业务默认值。 6. 设计能区分修复前后行为的测试,覆盖缺字段、显式空值、查询无记录、远程返回不完整和混合集合;同时保留正常业务样例,记录真正执行的结果。 ## 交付与验收 输出要求:先给空值语义表,再给风险清单、修正代码与测试矩阵。每个风险须给出“来源字段|传播路径|触发输入|错误业务结果”,无法重现的项目保持待验证状态。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 风险表包含来源字段、传播路径、触发输入和错误业务结果。 - 修复建议说明校验位置、旧数据与调用方兼容性,不以消除异常掩盖未知事实。 - 用例覆盖缺字段、显式空值、无记录、外部缺项与混合集合,并保留正常样例。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
用于新接口开发和前后端联调,检查字段含义、空值、枚举、序列化兼容及接口说明。
## 任务目标 请评审 Java 接口契约与 DTO 字段。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 接口或业务操作:优先使用当前需求或接口变更;留空时从现有 Controller/RPC 入口与调用方选取一条实际业务操作,连同 DTO、响应和异常完成契约评审。 工程与接口资料:读取接口定义、DTO/VO、服务方法、序列化和校验配置、前端或 RPC 调用样例及既有测试,自动确认框架与 Java 模型类型。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 追踪发起角色、前提、数据对象、成功时点和异常到接口返回的映射。 - 核对字段名称、类型、长度、单位、必填条件、枚举、空值及脱敏。 - 检查 DTO 到 Service 到 VO 的转换、可写字段和实际 JSON,识别 record 或特殊模型。 - 读取客户端兼容、分页排序、重复提交、对象归属及真实租户边界的实现与样例。 ### 可采用的默认处理 - 默认只读评审,给最小契约修正示例,不直接修改公共字段和错误码。 - 已有客户端实际使用方式优先纳入兼容评估,不把传统 JavaBean 规则套到所有模型。 - 业务说明不足时分别记录代码现状和待确认语义,不把 HTTP 成功当作异步业务完成。 ### 必须有依据的事项 - 金额单位、时间含义、状态或异步完成标准未定义时,不编造字段默认值与业务验收结果。 - 合法操作角色、对象归属或旧客户端兼容约束存在冲突时,不自行放宽写入权限或破坏公共契约。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付接口与字段字典、有效请求和边界请求的契约模板,未定义的业务结果明确标注。 - 只有接口样例时完成字段一致性与兼容风险审查,列出需要从实现确认的转换和权限点。 ## 执行要求 适用范围:常规Java后端的HTTP或RPC接口;先核对JDK与框架版本,不将传统JavaBean约定直接套用于record或特殊序列化模型。 让接口说明覆盖输入、返回及异常,使用能准确表达含义的名称。 检查步骤: 1. 从业务需求列出操作对象、发起角色、前置条件、成功状态和失败状态,逐项对应到接口;不能用接口返回成功替代业务实际完成,异步任务要明确状态查询入口。 2. 建立请求与响应字段字典,逐个核对名称、类型、长度、单位、必填条件、空值含义、枚举和脱敏要求;遇到金额、时区、状态码等缺少定义时指出具体缺口。 3. 追踪DTO到业务方法再到响应对象的转换,检查重命名、漏传、默认值和字段覆盖;对布尔属性核对实际序列化结果,并用现有客户端样例验证兼容性。 4. 检查路径、查询参数与请求体是否承担清晰职责,列出重复提交、分页、排序、越权对象访问等边界;只在项目确有多租户时核对租户字段的可信来源。 5. 补齐接口注释需要表达的业务规则,给出一组有效请求和至少三组边界请求,响应需包含可处理的业务信息;不要向用户暴露堆栈或内部连接信息。 6. 将需求、接口、字段和验收用例逐条关联,区分新增接口与兼容改动;评估旧客户端在字段缺失、增加或枚举扩展时的行为,并给出分阶段联调顺序。 ## 交付与验收 输出要求:依次给出接口清单、字段字典、问题表、最小修改示例和联调用例。问题表使用“位置|触发条件|实际影响|修正建议|验证方式”,用例写明请求、期望业务状态及期望响应。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 需求、接口、字段和用例能够对应,问题具有位置、触发条件、影响和验证方式。 - 检查实际序列化、字段覆盖与越权写入,说明新增和兼容改动的区别。 - 至少给有效请求及三类边界请求,分别标明预期业务状态与响应,未验证行为不写通过。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里巴巴《P3C-PMD 官方公开规则》](https://github.com/alibaba/p3c/blob/master/p3c-pmd/README.md) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。