golangci-lint中forbidigo规则无法匹配Times(1)函数调用的问题求助
golangci-lint中forbidigo规则无法匹配Times(1)函数调用的问题求助
各位golangci-lint的大佬们,最近碰到个棘手的小问题,想请教下大家:
我想用forbidigo规则来禁止代码中多余的.Times(1)调用(毕竟gomock里默认就是单次调用,显式写出来纯属冗余),但不管怎么调整正则pattern,规则就是匹配不到代码里的目标调用,完全不触发lint警告,实在搞不懂哪里出问题了。
先贴一下我的forbidigo配置:
forbidigo: forbid: - pattern: Times\(1\) msg: "No need to specify Times(1) for a single call."
然后是那段完全没被拦截的代码:
mockMarketDataService.EXPECT().GetLatestPrice( matchers.Ctx, enums.ChainNetworkSol, solana_go.WrappedSol.String(), enums.QuoteTokenNative, ).Return(solPrice, nil).Times(1)
我已经试过各种正则排列组合了:
- 把pattern改成
.Times(,想先匹配所有Times调用试试,结果还是没反应 - 甚至直接写
Times(1)(没加转义符)也没用 - 尝试过用
.*Times\(1\)这种通配前缀的写法,依旧不生效
有没有大佬知道这是咋回事?难道forbidigo对链式调用里的方法匹配有特殊逻辑?还是我的正则写法哪里踩坑了?麻烦帮忙指点一下,万分感谢!




