SuperAPI AI 工具集

migrate-static-to-wrapper

通用与其它

查看项目

更新于 10-16 00:32

技能介绍

用途:对静态依赖调用点做机械式、codemod 风格的替换,改为调用注入的包装接口或内置抽象,范围限定在单个文件、项目或命名空间,便于增量迁移。

主要能力:替换时间、文件、环境变量、控制台、进程等静态调用,例如 DateTime.UtcNow → TimeProvider.GetUtcNow()、File.ReadAllText → IFileSystem.File.ReadAllText;为受影响类添加构造函数注入(传统构造函数或 C# 12 主构造函数);补充所需 using 指令;更新测试文件中的构造调用并改用测试替身(如 FakeTimeProvider、MockFileSystem);最后用 dotnet build <project.csproj> 验证并输出迁移摘要。

使用方式:需提供静态模式、替换抽象、范围三项必填输入,注入策略可选(constructor 默认、primary-constructor 或 ambient)。流程为先确认包装/抽象与 DI 注册存在,再逐文件规划替换、添加注入、替换调用点、更新测试、构建验证、报告变更。

适用场景:已生成包装或已识别内置抽象后,按项目或命名空间逐步迁移 DateTime、File、Environment、Console、Process 等静态调用。

限制:尚无包装或抽象时不应使用(应先生成);仅检测而非迁移时不应使用;代码未使用依赖注入且未选择 ambient 上下文时不应使用;不用于测试框架之间的迁移。注意不要替换测试代码中的静态调用,静态类无法添加构造函数,需注意 DateTime 与 DateTimeOffset 的类型兼容,并避免一次迁移过多范围。