SuperAPI AI 工具集

detect-static-dependencies

通用与其它

查看项目

更新于 10-16 00:05

技能介绍

用途:审计 C#/.NET 代码库的可测试性,找出对难以测试的静态 API 的调用,输出按频率排序的报告,说明哪些静态调用最多、哪些文件受影响最大,以及 .NET 生态中已有的替代抽象。适用于添加单元测试前的可测试性审计、理解遗留代码的静态耦合范围、确定优先包装哪些静态调用、制定渐进式可测试性改进迁移计划。

主要能力:按类别搜索静态依赖模式,包括时间(DateTime.Now、DateTime.UtcNow、Task.Delay 等,推荐 TimeProvider)、文件系统(File.ReadAllText、Directory.GetFiles、new FileInfo 等,推荐 System.IO.Abstractions)、随机与标识(new Random、Guid.NewGuid)、区域性/序列化(CultureInfo.CurrentCulture、JsonSerializer)、环境(Environment.GetEnvironmentVariable 等)、网络(new HttpClient、GetAsync 等)、控制台(Console.WriteLine 等)、进程(Process.Start 等)。聚合每个调用点,生成类别汇总、Top 10 模式、受影响文件最多的文件、迁移优先级,并给出下一步建议。

使用方式:可指定目标路径(文件、目录、.csproj 或 .sln),默认扫描当前工作区;支持排除模式(如 /obj/)和类别过滤(time、filesystem、environment、network、console、process)。先递归搜索带行号的 .cs 文件内容,再核对接收者来源,最后汇总排序并输出结构化报告。

限制:仅适用于 C#/.NET;不生成包装器(应交给 generate-testability-wrappers),不执行机械迁移(应交给 migrate-static-to-wrapper);已位于接口或 TimeProvider 之后的静态调用不处理;需排除 obj/、bin/、生成代码和测试项目;对注入的协作者(如注入的 HttpClient)不计入需包装总数;Path.Combine、Math.* 等确定性纯辅助方法不算可测试性障碍;若 .NET 版本低于 8,TimeProvider 建议需改用 NodaTime.IClock 或自定义 ISystemClock。