SuperAPI AI 工具集

dotnet-inspect-correctness

通用与其它

查看项目

更新于 10-15 21:04

技能介绍

用途:判断 .NET 代码是否健全、能否安全调用,包括它会抛出什么异常、如何处理错误,以及在哪里脱离安全的托管执行。属于单版本分析;若要比较信号在不同版本间的变化,应使用兼容性技能。

主要能力:异常面来自方法体分析,“Exception Regions”显示 catch/filter/finally 的布局,Call Graph 字段可汇总 Throws、ThrowSites、ExceptionTypes、ConstructedExceptions、Catch、Finally;“Unsafe Operations”显示单个方法体内的不安全操作及 IL 证据。还可用库坐标(如 0x06000001+0x5 --library Foo.dll)查看单一崩溃或探查点位,安全性证据需显式启用 -S "Context: Safety"。

使用方式:命令形式为 dnx dotnet-inspect -y -- <command>。用 capture 包装器保存每个命令的状态与诊断,分别获取 unsafe-members.jsonl、pinvoke-methods.jsonl、custom-attributes.jsonl、references.jsonl、signals.json、resource-triage.jsonl 等行集,再用 jq 按精确操作、API 族或 localloc 切片与组合,最后只对关键成员下钻。可借助 agent 与 jq 复用同一批 JSONL 行回答不同安全问题。

适用场景:按 .NET unsafe 代码最佳实践指南的 26 个主题做审查路由,例如托管指针、固定指针逃逸、reinterpret 转换、stackalloc、固定缓冲区、字符串变更、原始 IL 生成、未初始化局部变量、ArrayPool 池化、互操作与 SIMD 等。

限制:该技能提供编译证据,而非整体合规结论。库级自定义特性不覆盖类型、字段或方法上的特性,也无法确定 SkipLocalsInit;Resource Triage 当前没有正向完成回执,所有权覆盖须视为未验证;空行集不等于安全。编译器警告不保留在普通程序集中;模糊测试覆盖与源码级问题需另行检查源或 CI。若缺失事实未提供,则以工具输出边界为准。