我一般都是指针分析和静态分析的新手,我希望有人能给我一个简短的答案,并把我推向正确的方向。
基本上我想要实现的是对Go源进行静态分析,寻找潜在的错误代码,例如:忘了Flush()一个缓冲区。
在单个函数中对缓冲区变量执行Flush()操作后检查它可能很简单。但是在下面的代码中,很难检测到缓冲区实际上是在另一个被调用的函数中关闭的。
如何很好地进行静态检查来解决这个问题,我只能想到使用Go工具指针包1,但要掌握文档并不容易。
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
w := bufio.NewWriter(os.Stdout)
fmt.Fprint(w, "Hello, World")
closeBuffer(w)
}
func closeBuffer(buf *bufio.Writer) {
buf.Flush()
}