• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    golang一些常用的静态检查工具详解

    一、背景

    俗话说,工欲善其事,必先利其器。go 作为一个对基础功能封装非常好的语言,对编码体验,如何更高效地写出高性能代码,都是考虑非常好的。因此,如何能够写出更美观、更安全的golang代码,也是我们需要关注的目标。go 本身也提供了非常多的工具供我们使用。

    这里先将所有常用的指令放到这个表格中:

    二、gofmt

    主要修复代码格式,比如代码块的tab。

    2.1 参数说明

    -l: 仅打印需要替换的文件名字,不替换文件内容

    如下:

    -r: 指定替换规则,格式:-s “pattern -> replacement”

    -s:显式指定需要替换的文件

    -w:直接修改目标文件,且命令行不打印任何数据

    idea 自带,也可以使用下面的语句强行执行

    一般是对工程中变量名字的对齐,比如行开头统一使用tab

    注意:gofmt ≠ 代码规范,比如它不会管单行是否超过了120个字符

    2.2 go fmt

    go fmt 是对 gofmt 的简单封装,比如一些通用的代码规范规则,我们直接使用go fmt 就可以直接覆盖了。效果如下:

    当然,和 gofmt 一样,go fmt 也不能解决代码本身的逻辑问题。

    三、goimports(比gofmt 更常用)

    goimports 是gofmt 的升级版,相对gofmt,它不仅可以修复代码格式,还可以规范import 的格式。
    比较规范的import 格式:

    import(
     // 标准包
     "log"
     "json"
     ...
     // 内部包
     "mygoproject/model/..."
     ...
     // 第三方包
     "github.com/..."
    )

    3.1 安装

    go get golang.org/x/tools/cmd/goimports

    3.2 goland 配置

    3.3 手动格式化代码/项目

    修改某个文件:
    goimports -w filename

    修改整个目录下的所有代码:
    goimports -w 目录名

    3.4 扩展:为什么格式规范化推荐用 goimports 而不是 go fmt

    总结:goimports 也封装了gofmt 的功能,而且goimports 会对无用import 删除,对go 自己的包和第三方包 进行整理,功能更强大。

    四、go vet (静态代码检查)

    前面看到的 gofmt 和 goimports 都不涉及到代码逻辑的检查。那么接下来就是 go vet 大展手脚的地方了

    4.1 执行

    扫描单个文件:
    go vet filename.go

    扫描整个项目:
    go vet ./…

    4.2 可以修复的问题 4.2.1 语法

    比如这里我们使用 go routine 的语法有问题,执行 go vet 会提示:function must be invoked in go statement

    4.2.2 循环 和 goroutine/defer

    还是前面的示例,把括号补充之后,依然会报错:
    loop variable currentFloat captured by func literal

    这就是在循环中使用协程带来的问题了。具体原因可以参考这个问答说明。

    循环中使用 go routine 一定要注意参数的传递方式。正确的使用方式:

    4.2.3 其他语法问题

    比如永远是true/false的表达式,或者是不可到达的代码等。

    五、go module

    管理项目依赖
    专题介绍

    六、附录-其他参考文章

    1、goland 自带的go 工具

    到此这篇关于golang一些常用的静态检查工具的文章就介绍到这了,更多相关golang静态检查工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • golang实现的文件上传下载小工具
    • golang有用的库及工具 之 zap.Logger包的使用指南
    • golang的基础语法和常用开发工具详解
    • 基于golang如何实现error工具包详解
    • golang时间处理工具箱now的使用详解
    上一篇:浅谈go 协程的使用陷阱
    下一篇:golang使用 gomodule 在公共测试环境管理go的依赖的实例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    golang一些常用的静态检查工具详解 golang,一些,常用的,常,用的,