---
name: kd-cosmic-review
description: 金蝶苍穹/Cosmic 平台 Java 插件和 KSQL 代码审查技能，按官方审查优先级检查代码质量、生命周期、事务、性能、安全、DataSet 泄漏、校验器/操作/表单/列表/转换插件和 KSQL 风险。适用于苍穹、星瀚、星空旗舰版项目。
---

# 金蝶 Cosmic 审查

本技能用于审查苍穹/Cosmic 平台 Java 或 KSQL 变更。除非用户明确要求修复，否则只做审查，不直接改代码。

不要把本技能用于 Enterprise C# 代码；Enterprise 使用通用金蝶检查流程。

## 审查输入

优先审查用户明确指定的文件。若用户要求整体审查，在可用时检查 active run 和变更的 Java/SQL 文件。

审查前：

- 存在 harness run 时，先用 `kd_plan_status` 查看产品画像。
- 用 `kd_search` 查询 Cosmic 审查清单、生命周期、平台约束、KSQL 和单测指导。
- SDK 签名或生命周期方法不确定时，优先用 `kd_sdk_signature` 从当前项目实际 SDK jar 验证；查不到时再用 `kd_cosmic_api` 获取知识库线索，并要求编译或人工证据兜底。
- 变更中用到字段、操作、枚举值、表名、数据库列时，用 `kd_cosmic_metadata` 验证。
- 先运行 `kd_check` 做基础静态检查，再按下方清单深入审查。
- 对新增或修改的 SQL/KSQL 文件运行 `kd_ksql_lint`。

## 严重级别

- P0：阻断问题，可能导致崩溃、数据损坏、事务失效、安全暴露、严重资源泄漏或核心功能不可用。
- P1：高风险问题，可能影响生产性能、稳定性、扩展性或可维护性。
- P2：规范和可维护性问题，应在计划窗口修复。

## P0 重点

重点检查：

- 监听注册或 UI 操作放在错误生命周期阶段。
- 在事务钩子中独立 `save` 或 `update`，而不是修改平台传入的数据实体。
- `DataSet` 未使用 try-with-resources 或等价方式关闭。
- 校验器或操作插件使用字段但未声明预加载属性。
- 循环内数据库调用、服务保存或远程调用。
- 硬编码组织、用户、部门、账套、URL、密钥、账号密码等环境相关值。
- SQL 拼接、原生 `Statement`、用户输入未参数化、XML 外部实体风险。
- 在事件参数类型不支持的阶段调用不存在的 API。
- 嵌套 `DynamicObject` 访问缺少必要空值保护。

## P1 重点

重点检查：

- 循环内 `updateView`、`getFieldIndex`、元数据查询或高成本序列化。
- 查询缺少过滤条件、大结果集、字段路径过深。
- 大分录更新使用低效 UI model API，而不是批量或属性级 API。
- 无界集合、缓存 key 缺少账套隔离、绕过平台的原生线程。
- HTTP 或第三方调用缺少超时。
- 可批量处理的 SDK 调用被重复逐条调用。

## P2 重点

重点检查：

- 应抽常量的魔法值。
- 面向用户的中文提示未按项目规范走资源管理。
- 空 catch、丢失异常 cause、`printStackTrace`、日志缺少堆栈。
- 类名或方法名与插件类型不一致。
- 项目规范要求的 public 方法注释缺失。

## 误报规避

- 固定业务元数据 ID，如 formId、appId、billTypeId、枚举编码，不按环境硬编码处理。
- 中文注释和内部日志不按国际化问题处理。
- 不机械判定 `DynamicObject.getString`、`getLong`、`getBigDecimal` 的 null 检查，要结合字段可空性和平台行为。
- 注释中的代码不作为活动代码审查。
- 单元测试里的测试数据常量不按生产硬编码处理。

## 输出格式

先输出发现项，按严重级别排序。每个发现项包含：

- 级别：P0、P1 或 P2。
- 文件和行号。
- 具体问题。
- 为什么在 Cosmic 中有风险。
- 修复指令。

随后说明：

- 已运行和未运行的检查。
- 已验证的产品、元数据、本地 SDK 签名和 API 线索。
- 剩余风险或缺失上下文。

如果没有发现问题，明确说明未发现问题，并列出剩余测试或证据缺口。
