用于审批、工单、订单等状态流转,检查分支遗漏、重复提交、权限和持久化结果。
## 任务目标 请检查 Java 审批状态分支,并设计业务测试。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 审批流程:从当前需求或状态异常定位审批操作;留空时扫描现有审批 Controller、Service 和状态枚举,选择一条包含角色判断与状态写入的流程进行检查。 工程与审批规则:读取状态枚举、分支代码、权限定义、条件更新 SQL、现有用例及业务说明,自动还原实际迁移路径和版本。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 将入口操作、角色、对象归属和状态枚举对应到具体分支。 - 检查 switch 默认分支、复合条件顺序、未知和历史状态的处理。 - 追踪数据库条件更新、版本字段、唯一约束和外部动作,识别重复与并发覆盖。 - 对照现有测试和业务说明,分别记录代码现状与已确认规则。 ### 可采用的默认处理 - 默认只读检查和测试设计,给保持行为的最小整理建议,不自动新增审批步骤。 - 规则缺失时描述当前代码行为并标记待确认,不把现有分支直接当成已批准的业务规则。 - 未知状态不默认放行,权限、短路顺序和副作用按现有可信契约保留。 ### 必须有依据的事项 - 合法状态迁移、批准角色或对象归属规则没有可信依据时,不编造最终状态与越权测试的业务预期。 - 重复审批、撤回或并发竞争应由哪个操作生效不明确时,不擅自决定状态覆盖策略。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 有代码无规则时交付实际分支覆盖图、冲突与遗漏证据,以及业务预期待确认的测试表。 - 无工程时给状态迁移表、条件组合与重复并发测试模板,示例角色和状态仅用于说明方法。 ## 执行要求 适用范围:Java实现的有限业务状态与条件分支;状态迁移、权限和幂等策略以业务规则为准,不能按通用审批流程擅自补业务。 保持条件表达式易于理解,明确 switch 中未匹配情况的处理方式和各分支结束条件。 检查步骤: 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) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。