Go 发布自动更新代码所用 API 的 gofix 工具

希·梦评论(3) · · 4851 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。


下一版本的Go在最基础的软件包方面将包含显著的API变更。除非进行更新,采用新版 API,否则将无法编译实现HTTP服务器句柄调用net.Dial调用os.Open使用reflect软件包的代码。随着Go语言愈加稳定,发布频率减缓将成为常态。每周的快照版本中都会有API变更,部分可能能自动管理;然而,合计起来看,手动更新现有代码的工作量仍然非常地大。

Gofix是一款减轻更新现有代码工作量的新工具。它读取源文件中的程序,查找对旧版API的使用,用当前API进行改写,并将程序写回文件。有些API变更未保持全部原有功能,所以gofix的改写有时并不完美。当无法自动改写旧版API时,gofix将给出警告及文件名与所在行数,开发者可以检查并亲自重写代码。Gofix负责处理乏味冗长的简单变更,而把真正应该注意的部分留给开发者处理。

每当API有明显变更时 gofix的代码都会得到更新,并尽可能的进行自动转换。如果用户更新到新版 Go后代码无法编译,只需在源码目录运行一下Gofix。

例如,gofix可以将出自fmt/print.go的这段代码:


重写为采用新版 API 的代码:


几乎每行都有微小变更。重写的变更量大,但几乎完全机械化,可以交付计算机处理。

Gofix的实现离不开Go标准库中对将Go源文件解析为语法树将语法树打印回为Go源代码的支持。此外,Go打印库能以官方格式(通常可以通过gofmt工具实现)打印程序,可让gofix对Go程序的机械性更改不造成谬误。实际上,设计gofmt的关键动机之一——或许仅次于避免特定花括号放置位置的争论——就是简化重写Go程序的工具,如gofix的设计。

Gofix注定成为不可或缺的工具。Go团队一直使用该工具更新他们自己的项目,甚至是更新Google内部的源码树。Gofix允许用户修复错误或重构包API而无须担心转换现有代码的开销。用户也可以对gofix进行扩展,来支持他们自己的API。

via : The Go Programming Language Blog


有疑问加站长微信联系(非本文作者)

本文来自:ITEYE资讯

感谢作者:希·梦评论(3)

查看原文:Go 发布自动更新代码所用 API 的 gofix 工具

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4851 次点击  ∙  1 赞  
加入收藏 微博
上一篇:golang os
下一篇:go语言资料
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传