开发环境配置

    常用的工具包括:

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

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

    1. Goland的设置中,选择Tools - File Watchers,随后选择添加

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

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

    使用以下命令安装:

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

    golint的配置

    1. 随后在GolandTools - File Watchers配置下,通过复制go fmt的配置

    2. 保存即可,随后在代码编写中执行保存操作时将会自动触发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="immediateSync" value="false" />
    8. <option name="name" value="go fmt" />
    9. <option name="output" value="$FilePath$" />
    10. <option name="outputFilters">
    11. <array />
    12. </option>
    13. <option name="outputFromStdout" value="false" />
    14. <option name="program" value="$GoExecPath$" />
    15. <option name="runOnExternalChanges" value="false" />
    16. <option name="scopeName" value="Project Files" />
    17. <option name="trackOnlyRoot" value="true" />
    18. <option name="workingDir" value="$ProjectFileDir$" />
    19. <envs>
    20. <env name="GOROOT" value="$GOROOT$" />
    21. <env name="GOPATH" value="$GOPATH$" />
    22. </envs>
    23. </TaskOptions>
    24. <TaskOptions>
    25. <option name="arguments" value="-w $FilePath$" />
    26. <option name="checkSyntaxErrors" value="true" />
    27. <option name="description" />
    28. <option name="exitCodeBehavior" value="ERROR" />
    29. <option name="fileExtension" value="go" />
    30. <option name="immediateSync" value="false" />
    31. <option name="name" value="goimports" />
    32. <option name="output" value="$FilePath$" />
    33. <option name="outputFilters">
    34. <array />
    35. </option>
    36. <option name="outputFromStdout" value="false" />
    37. <option name="program" value="goimports" />
    38. <option name="runOnExternalChanges" value="false" />
    39. <option name="scopeName" value="Project Files" />
    40. <option name="trackOnlyRoot" value="true" />
    41. <option name="workingDir" value="$ProjectFileDir$" />
    42. <envs>
    43. <env name="GOROOT" value="$GOROOT$" />
    44. <env name="GOPATH" value="$GOPATH$" />
    45. <env name="PATH" value="$GoBinDirs$" />
    46. </envs>
    47. </TaskOptions>
    48. <TaskOptions>
    49. <option name="arguments" value="run --disable=typecheck $FileDir$" />
    50. <option name="description" />
    51. <option name="exitCodeBehavior" value="ERROR" />
    52. <option name="fileExtension" value="go" />
    53. <option name="immediateSync" value="false" />
    54. <option name="name" value="golangci-lint" />
    55. <option name="output" value="" />
    56. <option name="outputFilters">
    57. <array />
    58. <option name="outputFromStdout" value="false" />
    59. <option name="program" value="golangci-lint" />
    60. <option name="runOnExternalChanges" value="false" />
    61. <option name="scopeName" value="Project Files" />
    62. <option name="trackOnlyRoot" value="true" />
    63. <option name="workingDir" value="$ProjectFileDir$" />
    64. <envs>
    65. <env name="GOROOT" value="$GOROOT$" />
    66. <env name="GOPATH" value="$GOPATH$" />
    67. <env name="PATH" value="$GoBinDirs$" />
    68. </envs>
    69. </TaskOptions>
    70. <TaskOptions>
    71. <option name="arguments" value="-set_exit_status $FilePath$" />
    72. <option name="checkSyntaxErrors" value="true" />
    73. <option name="description" />
    74. <option name="exitCodeBehavior" value="ERROR" />
    75. <option name="fileExtension" value="go" />
    76. <option name="immediateSync" value="false" />
    77. <option name="name" value="golint" />
    78. <option name="output" value="$FilePath$" />
    79. <option name="outputFilters">
    80. <array />
    81. </option>
    82. <option name="outputFromStdout" value="false" />
    83. <option name="program" value="golint" />
    84. <option name="runOnExternalChanges" value="false" />
    85. <option name="scopeName" value="Project Files" />
    86. <option name="trackOnlyRoot" value="true" />
    87. <option name="workingDir" value="$ProjectFileDir$" />
    88. <envs>
    89. <env name="GOROOT" value="$GOROOT$" />
    90. <env name="GOPATH" value="$GOPATH$" />
    91. <env name="PATH" value="$GoBinDirs$" />
    92. </envs>
    93. </TaskOptions>