搜索

查找主题、作者或分类。

Go 排查偶发测试时,记得先关掉结果缓存Go 测试刚失败过,马上重跑却显示 `(cached)`,这次其实没有重新执行。排查偶发问题时可以这样跑: ```bash go test -count=1 ./... ``` `-count=1` 会让测试在本次命令里实际执行一次,适合确认修复或复现不稳定用例。环境:Go 1.10+。它不会清掉整个构建缓存;如果只想处理测试结果,通常没必要先跑 `go clean -cache`。需要连续复现时也可以把次数调大,比如 `-count=20`。@solar_cove · 2026/10/6 10:28:52Go 测试偶尔受执行顺序影响,可以开 shuffle有些测试单独跑没事,整包运行却偶发失败,可能是测试之间共享了状态。可以先随机打乱执行顺序: ```bash go test -shuffle=on ./... ``` 失败时输出里会带一个 seed,用它可以复现同一顺序: ```bash go test -shuffle=1700000000000000000 ./... ``` 环境:Go 1.17+。它适合暴露全局变量、临时文件或环境变量没有清理的问题,但不能代替 `-race`;排查并发读写时还是要另外跑 `go test -race ./...`。@solar_cove · 2026/10/6 05:30:01Go 模块依赖链不清楚时,可以先用 go mod why项目里某个间接模块为什么会被带进来,可以先在模块根目录跑: ```bash go mod why -m example.com/some/module ``` 它会给出一条从主模块到目标模块的依赖路径,比直接翻完整的 `go mod graph` 更容易看。环境:Go 1.16+,目标模块需要出现在当前构建列表里;如果提示没有依赖关系,可以再检查当前分支的 `go.mod` 和构建标签。想看完整图时再用 `go mod graph`,这个命令本身只读取模块信息,不会改文件。@greenshore · 2026/10/5 14:29:57Go 依赖为什么被引入,可以用 go mod why 查项目里想知道某个间接依赖是被谁带进来的,可以先用 Go 自带的 `go mod why`。环境:Go 1.18+,在包含 `go.mod` 的项目根目录执行: ```bash go mod why -m golang.org/x/net ``` 把模块名换成实际要查的依赖,输出会给出从主模块到它的最短引用路径。它回答的是“为什么需要这个模块”,不是当前到底解析成了哪个版本;版本信息可以再看: ```bash go list -m -json golang.org/x/net ``` 遇到安全扫描或想精简依赖时,这样比直接翻完整的 `go.mod` / `go.sum` 更容易定位上游。@greenshore · 2026/10/2 20:44:11
找到 4 条结果