关于 inspect-structure
inspect-structure 是面向开发者的只读代码结构审查技能,用于检查指定范围内的可维护性问题。它覆盖类与方法设计、重复、耦合和资源管理,并输出技术债务报告,不修改文件。
主要功能
- 01检查类职责与内聚性
- 02识别过长方法和深层嵌套
- 03发现跨文件重复逻辑
- 04检查耦合与封装问题
- 05审查错误处理和资源清理
- 06只输出报告,不修改代码
适用场景
- 01审查指定模块的结构性技术债务
- 02定位重复逻辑与职责过多的类
- 03检查资源生命周期和错误处理问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ venhdev/ skills --skill inspect-structure安装后在 Claude Code 中输入/inspect-structure确认已加载。
详细介绍
inspect-structure — 代码质量与结构性债务检查器
领域准则
1. 范围与操作边界
- 结构性债务与语法格式:分析范围严格限定于模块、类和方法层面的结构性、面向对象及认知债务;空白字符、分号和样式细节完全交由原生代码检查工具处理。
- 架构形式与业务逻辑:仅审查结构内聚性和可维护性;没有权威规范时,绝不评估领域业务规则、定价逻辑或数学公式(将 Bug 隔离工作交由
/diagnose;将规范偏差交由/assay)。 - 只读审计与代码修改:仅交付结构化检查报告;禁止修改磁盘上的文件、生成代码差异或应用自动重构(将修复规划交由
/changeset)。
2. 结构检查维度
-
类内聚性与 SRP(上帝类)
- 异味:类聚合了多个不同的领域职责,字段或方法数量臃肿,或方法内聚性低。
- 改进:拆分为职责单一的服务、值对象或策略委托。
- 微型代码片段:
异味: class OrderManager { calculateTax(); sendEmail(); saveToDb(); renderPdf(); } 改进: class OrderService delegates to TaxCalculator, OrderMailer, OrderRepository, PdfRenderer.
-
方法与流程复杂度(长方法/深层嵌套)
- 异味:方法长度超出可管理范围,控制流嵌套 ≥ 3 层,存在箭头反模式,或认知负荷高。
- 改进:将条件反转为守卫子句,扁平化嵌套代码块,并拆分为专注于单一任务的辅助子程序。
- 微型代码片段:
异味: void process() { if (a) { while (b) { if (c) { try { ... } } } } } 改进: 使用守卫子句提前返回;将循环体提取为私有子程序。
-
系统性重复(宏观与微观 DRY)
- 异味:复制粘贴的算法例程、多个步骤组成的验证序列,或跨多个类、文件或方法的错误处理流程。
- 改进:将其集中到共享领域辅助工具、基础抽象或可复用中间件中。
- 微型代码片段:
异味: ServiceA 和 ServiceB 重复实现了相同的 20 行认证标头解析和声明验证。 改进: 提取为 TokenAuthenticator.validateAndExtractClaims()。
-
耦合与封装泄漏
- 异味:方法操作外部类的内部数据(特性嫉妒);类通过 getter 直接暴露可变的内部集合。
- 改进:遵循“只管吩咐,别问”;通过领域方法封装状态变更;返回不可变快照或防御性副本。
- 微型代码片段:
异味: if (order.getCustomer().getAddress().getCountry().equals("US")) { ... } 改进: if (order.isDomesticDelivery()) { ... }
-
多态与策略不足(分散的分支逻辑)
- 异味:多个类中分散着并行的
switch(type)或if (type == A)分支链,导致散弹式修改。 - 改进:使用多态、策略模式或专用访问者分派来替代分散的类型条件判断。
- 微型代码片段:
异味: PaymentService、InvoiceService 和 EmailService 都各自维护着并行的 switch (user.getPlanTier())。 改进: 将特定等级的行为封装在 PlanTier 策略实现中。
- 异味:多个类中分散着并行的
-
健壮性与资源管理规范
- 异味:通过空 catch 块吞掉错误;流、数据库连接句柄或事件监听器未受管理,缺少清理钩子。
- 改进:明确处理错误,或附带上下文元数据重新抛出;在确定性释放代码块(
defer、finally、using)中封装资源生命周期。 - 微型代码片段:
异味: try { connect(); } catch (Exception e) {} 改进: try { connect(); } catch (Exception e) { logger.error("DB connection failed", e); throw new ServiceUnavailableException(e); }
标准输出约定
# Structural Inspection Dossier: <Target Scope / Module>
## 1. Executive Summary
- **Target Inspected**: `<file_or_directory_path>`
- **Health Rating**: <CLEAN | MODERATE_DEBT | CRITICAL_DEBT>
- **Primary Bottleneck**: <Single-sentence summary of greatest structural risk>
## 2. Technical Debt Catalog
### [<CRITICAL | MAJOR | MINOR>] <Dimension Name>: `<Target Entity / Symbol>`
- **Location**: [<file>#L<N>-L<M>](file:///path/to/file#L<N>-L<M>)
- **Smell**: <Observable anti-pattern description and maintainability impact>
- **Remedy**: <Exact architectural decomposition or extraction path>
*(Repeat for each distinct structural finding; emit 'No structural code smells observed across rubric dimensions' if clean)*
路由
- 多文件结构重构、上帝类拆分或共享抽象提取 →(通过 /changeset)。
- 疑似运行时功能错误或测试失败 →(通过 /diagnose)。
执行协议
阶段 1:范围分流与宏观定位
- 输入目标路径(
file、directory或subsystem)。 - 使用符号和文件工具识别主要结构锚点(类、模块入口、共享工具)。
阶段 2:自适应规模检查
- 评估目标范围的规模:
- 单轮执行(少于 10 个文件或单个内聚模块):在当前轮次中直接根据评估标准维度审查代码。
- 子 Agent 分派(多包子系统或大型代码库):启动 2–3 个
research子 Agent(角色:Structural Inspector (<Slice>))。
- 子 Agent 上下文注入约定:
- 为每个子 Agent 提供目标切片坐标、已发现的结构锚点、领域评估标准维度,以及规范输出约定。
阶段 3:综合与轮次终止关卡(汇总)
- 将子 Agent 的发现进行协调与去重,并纳入规范输出约定。
- 确定最终健康评级:
CLEAN:没有违反评估标准的结构性缺陷。MODERATE_DEBT:存在零星封装泄漏、分散的条件判断或轻微重复。CRITICAL_DEBT:普遍存在上帝类、跨子系统的复制粘贴,或系统性资源泄漏。
- 将完整的检查报告输出到对话流中,并立即结束当前轮次。
评论
支持 Markdown