go cmd/vet:了解内置函数是否没有副作用

ltskdhd1  于 4个月前  发布在  Go
关注(0)|答案(3)|浏览(95)

提醒继续在 https://go-review.googlesource.com/c/go/+/79536 中进行工作。
例如,lencap 从不会产生任何副作用,了解 i == len(x) || i == len(x) 是一个可疑的表达式是有用的。
更广泛地说,这可以扩展到自动检测哪些函数没有副作用。但这需要访问具有完整类型信息的完整源代码,可能复杂且昂贵,所以我不确定它是否适合 vet。
上述内容的一个简化版本是添加标准库函数,如 strings.Containspath.Join。我不知道 vet 是否可以对标准库包进行不同的处理。

d8tt03nd

d8tt03nd1#

https://golang.org/cl/97775提到了这个问题:cmd/vet: teach vet that len and cap are pure funcs

kxkpmulp

kxkpmulp2#

https://golang.org/cl/112177提到了这个问题:cmd/vet: assume that no builtin funcs are pure

bvuwiixz

bvuwiixz3#

我已经放弃了我为这个CL发送的版本,因为它需要更多的工作,并且出现了相当多的合并冲突。也许将来会有其他人接手这个问题。

相关问题