- 开发环境配置
go fmt,goimports,golangci-lint的配置golint工具的安装及配置golint的安装golint的配置
- 配置备份导入
开发环境配置
本文以Goland开发工具为基础,介绍在该IDE下的常用工具配置。
常用的工具包括:
go fmt: 统一的代码格式化工具(必须)。golangci-lint: 静态代码质量检测工具,用于包的质量分析(推荐)。goimports: 自动import依赖包工具(可选)。golint: 代码规范检测,并且也检测单文件的代码质量,比较出名的Go质量评估站点Go Report在使用(可选)。
go fmt, goimports, golangci-lint的配置
由于这三个工具是Goland自带的,因此配置比较简单,参考以下图文操作示例:
在
Goland的设置中,选择Tools-File Watchers,随后选择添加
依次点击添加这3个工具,使用默认的配置即可

随后在撸代码的过程中保存代码文件时将会自动触发这3个工具的自动检测。
golint工具的安装及配置
golint的安装
由于Goland没有自带golint工具,因此首先要自己去下载安装该工具。
使用以下命令安装:
mkdir -p $GOPATH/src/golang.org/x/cd $GOPATH/src/golang.org/x/git clone https://github.com/golang/lint.gitgit clone https://github.com/golang/tools.gitcd $GOPATH/src/golang.org/x/lint/golintgo install
安装成功之后将会在$GOPATH/bin目录下看到自动生成了golint二进制工具文件。
golint的配置
随后在
Goland的Tools-File Watchers配置下,通过复制go fmt的配置
修改
Name,Program,Arguments三项配置,其中Arguments需要加上-set_exit_status参数,如图所示:
保存即可,随后在代码编写中执行保存操作时将会自动触发
golint工具检测。
配置备份导入
也可以通过保存以下XML配置文件内容,使用import导入功能即可完成配置(golnt还是得自己安装)。

文件内容:
<TaskOptions><TaskOptions><option name="arguments" value="fmt $FilePath$" /><option name="checkSyntaxErrors" value="true" /><option name="description" /><option name="exitCodeBehavior" value="ERROR" /><option name="fileExtension" value="go" /><option name="immediateSync" value="false" /><option name="name" value="go fmt" /><option name="output" value="$FilePath$" /><option name="outputFilters"><array /></option><option name="outputFromStdout" value="false" /><option name="program" value="$GoExecPath$" /><option name="runOnExternalChanges" value="false" /><option name="scopeName" value="Project Files" /><option name="trackOnlyRoot" value="true" /><option name="workingDir" value="$ProjectFileDir$" /><envs><env name="GOROOT" value="$GOROOT$" /><env name="GOPATH" value="$GOPATH$" /><env name="PATH" value="$GoBinDirs$" /></envs></TaskOptions><TaskOptions><option name="arguments" value="-w $FilePath$" /><option name="checkSyntaxErrors" value="true" /><option name="description" /><option name="exitCodeBehavior" value="ERROR" /><option name="fileExtension" value="go" /><option name="immediateSync" value="false" /><option name="name" value="goimports" /><option name="output" value="$FilePath$" /><option name="outputFilters"><array /></option><option name="outputFromStdout" value="false" /><option name="program" value="goimports" /><option name="runOnExternalChanges" value="false" /><option name="scopeName" value="Project Files" /><option name="trackOnlyRoot" value="true" /><option name="workingDir" value="$ProjectFileDir$" /><envs><env name="GOROOT" value="$GOROOT$" /><env name="GOPATH" value="$GOPATH$" /><env name="PATH" value="$GoBinDirs$" /></envs></TaskOptions><TaskOptions><option name="arguments" value="run --disable=typecheck $FileDir$" /><option name="checkSyntaxErrors" value="true" /><option name="description" /><option name="exitCodeBehavior" value="ERROR" /><option name="fileExtension" value="go" /><option name="immediateSync" value="false" /><option name="name" value="golangci-lint" /><option name="output" value="" /><option name="outputFilters"><array /></option><option name="outputFromStdout" value="false" /><option name="program" value="golangci-lint" /><option name="runOnExternalChanges" value="false" /><option name="scopeName" value="Project Files" /><option name="trackOnlyRoot" value="true" /><option name="workingDir" value="$ProjectFileDir$" /><envs><env name="GOROOT" value="$GOROOT$" /><env name="GOPATH" value="$GOPATH$" /><env name="PATH" value="$GoBinDirs$" /></envs></TaskOptions><TaskOptions><option name="arguments" value="-set_exit_status $FilePath$" /><option name="checkSyntaxErrors" value="true" /><option name="description" /><option name="exitCodeBehavior" value="ERROR" /><option name="fileExtension" value="go" /><option name="immediateSync" value="false" /><option name="name" value="golint" /><option name="output" value="$FilePath$" /><option name="outputFilters"><array /></option><option name="outputFromStdout" value="false" /><option name="program" value="golint" /><option name="runOnExternalChanges" value="false" /><option name="scopeName" value="Project Files" /><option name="trackOnlyRoot" value="true" /><option name="workingDir" value="$ProjectFileDir$" /><envs><env name="GOROOT" value="$GOROOT$" /><env name="GOPATH" value="$GOPATH$" /><env name="PATH" value="$GoBinDirs$" /></envs></TaskOptions></TaskOptions>
