开发环境配置

本文以Goland开发工具为基础,介绍在该IDE下的常用工具配置。

常用的工具包括:

  1. go fmt : 统一的代码格式化工具(必须)。
  2. golangci-lint : 静态代码质量检测工具,用于包的质量分析(推荐)。
  3. goimports : 自动import依赖包工具(可选)。
  4. golint : 代码规范检测,并且也检测单文件的代码质量,比较出名的Go质量评估站点Go Report在使用(可选)。

go fmt, goimports, golangci-lint的配置

由于这三个工具是Goland自带的,因此配置比较简单,参考以下图文操作示例:

  1. Goland的设置中,选择Tools - File Watchers,随后选择添加 开发环境配置 - 图1

  2. 依次点击添加这3个工具,使用默认的配置即可 开发环境配置 - 图2

  3. 随后在撸代码的过程中保存代码文件时将会自动触发这3个工具的自动检测。

golint工具的安装及配置

golint的安装

由于Goland没有自带golint工具,因此首先要自己去下载安装该工具。

使用以下命令安装:

  1. mkdir -p $GOPATH/src/golang.org/x/
  2. cd $GOPATH/src/golang.org/x/
  3. git clone https://github.com/golang/lint.git
  4. git clone https://github.com/golang/tools.git
  5. cd $GOPATH/src/golang.org/x/lint/golint
  6. go install

安装成功之后将会在$GOPATH/bin目录下看到自动生成了golint二进制工具文件。

golint的配置

  1. 随后在GolandTools - File Watchers配置下,通过复制go fmt的配置 开发环境配置 - 图3

  2. 修改Name, Program, Arguments三项配置,其中Arguments需要加上-set_exit_status参数,如图所示: 开发环境配置 - 图4

  3. 保存即可,随后在代码编写中执行保存操作时将会自动触发golint工具检测。

配置备份导入

也可以通过保存以下XML配置文件内容,使用import导入功能即可完成配置(golnt还是得自己安装)。

开发环境配置 - 图5

文件内容:

  1. <TaskOptions>
  2. <TaskOptions>
  3. <option name="arguments" value="fmt $FilePath$" />
  4. <option name="checkSyntaxErrors" value="true" />
  5. <option name="description" />
  6. <option name="exitCodeBehavior" value="ERROR" />
  7. <option name="fileExtension" value="go" />
  8. <option name="immediateSync" value="false" />
  9. <option name="name" value="go fmt" />
  10. <option name="output" value="$FilePath$" />
  11. <option name="outputFilters">
  12. <array />
  13. </option>
  14. <option name="outputFromStdout" value="false" />
  15. <option name="program" value="$GoExecPath$" />
  16. <option name="runOnExternalChanges" value="false" />
  17. <option name="scopeName" value="Project Files" />
  18. <option name="trackOnlyRoot" value="true" />
  19. <option name="workingDir" value="$ProjectFileDir$" />
  20. <envs>
  21. <env name="GOROOT" value="$GOROOT$" />
  22. <env name="GOPATH" value="$GOPATH$" />
  23. <env name="PATH" value="$GoBinDirs$" />
  24. </envs>
  25. </TaskOptions>
  26. <TaskOptions>
  27. <option name="arguments" value="-w $FilePath$" />
  28. <option name="checkSyntaxErrors" value="true" />
  29. <option name="description" />
  30. <option name="exitCodeBehavior" value="ERROR" />
  31. <option name="fileExtension" value="go" />
  32. <option name="immediateSync" value="false" />
  33. <option name="name" value="goimports" />
  34. <option name="output" value="$FilePath$" />
  35. <option name="outputFilters">
  36. <array />
  37. </option>
  38. <option name="outputFromStdout" value="false" />
  39. <option name="program" value="goimports" />
  40. <option name="runOnExternalChanges" value="false" />
  41. <option name="scopeName" value="Project Files" />
  42. <option name="trackOnlyRoot" value="true" />
  43. <option name="workingDir" value="$ProjectFileDir$" />
  44. <envs>
  45. <env name="GOROOT" value="$GOROOT$" />
  46. <env name="GOPATH" value="$GOPATH$" />
  47. <env name="PATH" value="$GoBinDirs$" />
  48. </envs>
  49. </TaskOptions>
  50. <TaskOptions>
  51. <option name="arguments" value="run --disable=typecheck $FileDir$" />
  52. <option name="checkSyntaxErrors" value="true" />
  53. <option name="description" />
  54. <option name="exitCodeBehavior" value="ERROR" />
  55. <option name="fileExtension" value="go" />
  56. <option name="immediateSync" value="false" />
  57. <option name="name" value="golangci-lint" />
  58. <option name="output" value="" />
  59. <option name="outputFilters">
  60. <array />
  61. </option>
  62. <option name="outputFromStdout" value="false" />
  63. <option name="program" value="golangci-lint" />
  64. <option name="runOnExternalChanges" value="false" />
  65. <option name="scopeName" value="Project Files" />
  66. <option name="trackOnlyRoot" value="true" />
  67. <option name="workingDir" value="$ProjectFileDir$" />
  68. <envs>
  69. <env name="GOROOT" value="$GOROOT$" />
  70. <env name="GOPATH" value="$GOPATH$" />
  71. <env name="PATH" value="$GoBinDirs$" />
  72. </envs>
  73. </TaskOptions>
  74. <TaskOptions>
  75. <option name="arguments" value="-set_exit_status $FilePath$" />
  76. <option name="checkSyntaxErrors" value="true" />
  77. <option name="description" />
  78. <option name="exitCodeBehavior" value="ERROR" />
  79. <option name="fileExtension" value="go" />
  80. <option name="immediateSync" value="false" />
  81. <option name="name" value="golint" />
  82. <option name="output" value="$FilePath$" />
  83. <option name="outputFilters">
  84. <array />
  85. </option>
  86. <option name="outputFromStdout" value="false" />
  87. <option name="program" value="golint" />
  88. <option name="runOnExternalChanges" value="false" />
  89. <option name="scopeName" value="Project Files" />
  90. <option name="trackOnlyRoot" value="true" />
  91. <option name="workingDir" value="$ProjectFileDir$" />
  92. <envs>
  93. <env name="GOROOT" value="$GOROOT$" />
  94. <env name="GOPATH" value="$GOPATH$" />
  95. <env name="PATH" value="$GoBinDirs$" />
  96. </envs>
  97. </TaskOptions>
  98. </TaskOptions>