zoukankan      html  css  js  c++  java
  • Go代码检修工具集

    Go代码检修工具集

    gofmt

    Go安装程序中自带了gofmt工具,可以使用它来格式化代码,保持一致的代码风格:

    $ find . -name "*.go" -not -path "./vendor/*" -not -path ".git/*" | xargs gofmt -s -d
    

    gocyclo

    gocyclo 用来检查函数的复杂度。

    安装:

    $ go get -u github.com/fzipp/gocyclo
    

    使用:

    $ gocyclo -over 12 $(ls -d */ | grep -v vendor)
    

    上面的命令列出了所有复杂度大于12的函数。你还可以提出最复杂的几个:

    $ gocyclo -top 10 $(ls -d */ | grep -v vendor)
    

    interfacer

    interfacer 是一个有趣的工具,依照作者所说:

    这个工具提供接口类型的建议,换句话说,它会对可以本没有必要定义成具体的类型的代码提出警告

    安装:

    $ go get -u github.com/mvdan/interfacer/cmd/interfacer
    

    使用:

    $ interfacer $(glide nv)
    

    译者按:看官方的例子就明白这个工具的作用了:

    func ProcessInput(f *os.File) error {
            b, err := ioutil.ReadAll(f)
            if err != nil {
                    return err
            }
            return processBytes(b)
    }
    $ interfacer $(go list ./... | grep -v /vendor/)
    foo.go:10:19: f can be io.Reader
    

    deadcode

    deadcode会告诉你哪些代码片段根本没用。

    安装:

    $ go get -u github.com/tsenart/deadcode
    

    使用:

    $ find . -type d -not -path "./vendor/*" | xargs deadcode
    

    gotype

    gotype会对go文件和包进行语义(semantic)和句法(syntactic)的分析,这是google提供的一个工具。

    安装:

    $ go get -u golang.org/x/tools/cmd/gotype
    

    使用:

    $ find . -name "*.go" -not -path "./vendor/*" -not -path ".git/*" -print0 | xargs -0 gotype -a
    

    misspell

    misspell用来拼写检查,对国内英语不太熟练的同学很有帮助。

    安装:

    $ go get -u github.com/client9/misspell
    

    使用:

    $ find . -type f -not -path "./vendor/*" -print0 | xargs -0 misspell
    

    staticcheck

    staticcheck是一个超牛的工具,提供了巨多的静态检查,就像 C#生态圈的 ReSharper 一样。

    安装:

    $ go get -u honnef.co/go/staticcheck/cmd/staticcheck
    

    使用:

    $ staticcheck $(glide nv)
    

    gosimple

    gosimple 提供信息,帮助你了解哪些代码可以简化。

    安装:

    $ go get -u honnef.co/go/simple/cmd/gosimple
    

    使用:

    $ gosimple $(glide nv)
    

    译者按: 事实上这个工具和上面的staticcheck工具已经合并为同一个项目了:go-tools,这个项目提供了非常好的工具, 还包括 structlayout-optimizeunusedrdepskeyify等,值的你去探索。

    goconst

    goconst 会查找重复的字符串,这些字符串可以抽取成常量。

    $ go get -u github.com/jgautheron/goconst/cmd/goconst
    

    使用:

    $ goconst ./… | grep -v vendor
    

    以上是作者列出的一些工具, 和我以前的一篇文章中列出的工具有很多重合的: 使用工具检查你的代码, 事实上我在项目中已经使用了文中很多的代码,非常非常的有帮助,希望你在阅读后能有所收获,快将这些工具加入到你的Makefile文件中吧。

    Songzhibin
  • 相关阅读:
    写一个简单的 Linux Shell (C++)
    操作系统课程设计的技巧与踩坑
    Power Designer建模之餐饮在线点评系统——概念数据模型
    Power Designer建模之餐饮在线点评系统——业务处理模型
    Power Designer建模之餐饮在线点评系统——需求模型实例
    使用本地json-server服务,创建简单的本地api数据
    从入门到入土JS知识(一):关系操作符和相等操作符
    工作中用到的小脚本2
    绕WAF(Bypass)--随时更新
    关于FastJson漏洞的一切(未完待续)
  • 原文地址:https://www.cnblogs.com/binHome/p/14149941.html
Copyright © 2011-2022 走看看