16 | 代码检查:如何进行静态代码检查?
该思维导图由 AI 生成,仅供参考
为什么选择 golangci-lint 做静态代码检查?
- 深入了解
- 翻译
- 解释
- 总结
golangci-lint是一款强大的静态代码检查工具,具有灵活性和自定义配置的优点。本文详细介绍了golangci-lint的安装方法、命令和选项,以及配置文件内容和使用技巧。读者可以通过命令行选项和配置文件灵活地配置golangci-lint,包括忽略文件和文件夹、启用/禁用linter、输出格式等。文章还展示了如何使用golangci-lint进行静态代码检查,包括对指定文件或目录进行检查、减少误报和使用nolint标记来开关某些检查项。此外,作者分享了一些使用golangci-lint的经验技巧,如按目录修改、按文件修改、设置linter的line-length等。总之,本文内容详实,适合Go项目开发者快速了解和使用golangci-lint进行静态代码检查。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(12)
- 最新
- 精选
- helloworld我使用vim+ale+golangci-lint做Go的静态代码检查,编写代码的过程中保存文件时自动触发检查,第一时间在文件内就给出了错误或警告的提示信息,直接按提示修复即可,基本上用不着在命令行执行golangci-lint命令。而且配置了package级别的检查,不存在因单文件检查出现的误报。
作者回复: 在ide中集成,每个文件都检查,非常好的思路。但Ci的时间也需要用到golangci-lint。
2021-07-0111 - demon如果使用的IDE像goland这种,自身就带静态代码检查吧?
作者回复: goland也是需要配置的。
2021-07-0323 - lesserror孔老板,这句话没太理解:“首先,如果启用了 nolintlint,你就需要在//nolint后面添加 nolint 的原因// xxxx。” 麻烦能再解释一下吗?
作者回复: nolintlint:用来检查//nolint的格式是否是// nolint: gomnd // xxx这种格式。xxx是nolint的原因,例如: // nolint:unused // may be reused in the feature, or just show a migrate usage. nolintlint可以再.golangci.yaml文件中启用和设置: nolintlint: # Enable to ensure that nolint directives are all used. Default is true. allow-unused: true # Disable to ensure that nolint directives don't have a leading space. Default is true. allow-leading-space: true # Exclude following linters from requiring an explanation. Default is []. allow-no-explanation: [] # Enable to require an explanation of nonzero length after each nolint directive. Default is false. require-explanation: false # Enable to require nolint directives to mention the specific linter being suppressed. Default is false. require-specific: true
2021-10-0322 - HappyHasson如何在 golangci-lint 中集成自定义的 linter?
作者回复: https://golangci-lint.run/contributing/new-linters/ 看下这篇文章
2022-06-24归属地:广东1 - 咖梵冰雨"D:\Program Files\Go\bin\golangci-lint.exe" run D:\www\golang\test\main.go level=error msg="Running error: context loading failed: failed to load packages: failed to load with go/packages: err: go resolves to executable in current directory (.\\go.exe): stderr: " window golang 配置external Tools报这个错误,请问是什么原因
作者回复: 看下是不是go的安装路径有问题,不是标准的二进制存放路径。其实你这个问题,我没有遇到过,但我网上搜到了相似的问题,里面会有你想要的解释: https://gocn.vip/topics/11648 像这种错误,你可以自己尝试先解决,解决的过程也是学习的过程
2021-11-111 - Jone_乔泓恺老师:文中【技巧 4:尽可能多地使用 golangci-lint 提供的 linter】 中的两个查看 linters 的命令是不是放反了? 【golangci-lint 集成了很多 linters,可以通过如下命令查看:】`golangci-lint help linters` 【如果配置了 golangci-lint 配置文件,则可以通过命令golangci-lint help linters查看在当前配置下启用和禁用了哪些 linter】`golangci-lint linters`
作者回复: 感谢反馈,是写反了,我修复下
2022-07-05归属地:广东 - HappyHasson怎么联系老师呢,有项目问题想请教?
作者回复: 老师微信nightskong
2022-06-26归属地:广东 - Sch0ng使用golangci-lint做静态代码检查。检查速度快,功能强大,配置灵活,社区活跃,许多大公司在用。 静态代码检查可以守住代码质量的底线。2021-08-103
- yk贼有用2021-09-181
- __PlasticManprint_enable_linters.sh脚本可以改一下,输出的行为` - <linter name> # <linter description>`,这样在配置文件中可以比较方便地看到linter的用途: ```shell #!/usr/bin/env bash disable=( golint tagliatelle wrapcheck forcetypeassert goerr113 gomnd wsl testpackage gochecknoglobals interfacer maligned scopelint gocritic ) OLD_IFS=${IFS} IFS=$'\n' all=(`golangci-lint linters | awk -F':| ' '!match($0, /Enabled|Disabled|^$/){printf("%s # %s\n",$1,$0)}' | sort`) for item in ${all[@]} do if ! echo "${disable[@]}" | grep -w `echo "${item}" | awk -F' # ' '{print $1}'` &> /dev/null; then echo " - ${item}" fi done IFS=${OLD_IFS} ```2023-08-13归属地:四川