剑客
关注科技互联网

godef的一个bug

godef
可以打印出Go源代码中的符号,很多集成开发工具都集成了它,并且提供了Go to Definition的命令和快捷键,可以迅速的跳转到方法和变量的声明的地方,非常的方便。

比如我常用的vscode-go,就提供了这样的功能,但是目前godef有一个bug,就是不能跳转标准库net包下的方法定义,这个bug已经提交到github上: #18
, 大约在6月的时候就发现了这个bug,不清楚作者为什么没有fix,事实上早有人提供了修改的 pull request
。这个bug产生的原因是godef没有处理好"C"库。

我在这里把修改方法记录一下,你可以手工的修改编译godef。

找到godef文件夹下的parser文件(go/parser/parser.go),在 1970行增加一个判断。

name, err := p.pathToName(litToString(path), filepath.Dir(filename))if litToString(path) == "C" {   //下面三行新为修改这个bug新增加的行	if name == "" && litToString(path) == "C" {	name = "C"}if name == "" {

这样你的godef就可以正常工作了。

另外,如果你升级到Go1.7发现vscode代码自动完成功能不起作用的话,可以尝试在终端中执行gocode close,这个bug可以参考: 441

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址