Golang指针分析以确定缓冲区是否已被刷新

时间:2016-07-10 13:38:28

标签: pointers go static-analysis

我一般都是指针分析和静态分析的新手,我希望有人能给我一个简短的答案,并把我推向正确的方向。

基本上我想要实现的是对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()
}

0 个答案:

没有答案