golang有没有类似于c++中的cppcheck静态代码检测工具呢?答案是有的,今天向大家推荐一个工具golangci-lint, 主要是安装和使用的时候遇到不少了坑,分享出来供大家避坑;

以下是window下安装方法,结合vscode使用, 其他平台也可以参考

一、常规安装方法

使用命令: go get -u github.com/golangci/golangci-lint/cmd/golangci-lint

一般的第三方工具通过上面方法基本能安装成功,无非就是下载慢点,可golangci-lint就是不按照套路来,很不幸,通过上面方法,除非你的golang版本与最新的golangci-lint版本一致,否则,就会报以下错误:

# github.com/golangci/golangci-lint/internal/cache
..\..\..\..\github.com\golangci\golangci-lint\internal\cache\default.go:76:15: undefined: os.UserCacheDir
# github.com/golangci/golangci-lint/vendor/honnef.co/go/tools/config
..\..\..\..\github.com\golangci\golangci-lint\vendor\honnef.co\go\tools\config\config.go:23:17: undefined: os.UserCacheDir
# github.com/golangci/golangci-lint/vendor/honnef.co/go/tools/internal/cache
..\..\..\..\github.com\golangci\golangci-lint\vendor\honnef.co\go\tools\internal\cache\default.go:76:15: undefined: os.UserCacheDir
# github.com/golangci/golangci-lint/vendor/honnef.co/go/tools/ssa
..\..\..\..\github.com\golangci\golangci-lint\vendor\honnef.co\go\tools\ssa\builder.go:61:16: undefined: types.NewInterfaceType

二、正确安装方式

上述方法之所以安装不成功,主要是golang版本和golangci-lint版本不一致导致导致的;

1. 官方版本对应描述如下:

go < 1.9 isn't supported
go1.9 is officially supported by golangci-lint <= v1.10.2
go1.10 is officially supported by golangci-lint <= 1.15.0.
go1.11 is officially supported by golangci-lint <= 1.17.1.
go1.12+ are officially supported by the latest version of golangci-lint (>= 1.18.0).

2. 大家可以这个地址找到自己golang对应版本:

https://github.com/golangci/golangci-lint/releases

如我的go1.10, 需要用golangci-lint-1.15.0版本

3. 下载后直接解压

解压后将golangci-lint.exe文件直接放到GOPATH\bin目录下就可以直接使用了

三、正确使用

1.使用命令使用格式

该命令可以在vscode的终端下直接使用

命令格式: golangci-lint run [目录]/[文件]

错误使用方式,又一个不按套路来的命令,文件我们一般习惯用“*”表示,但golangci-lint 确不认这种方式,会报如下错误:

执行命令:golangci-lint run ./iss/*

报错:

level=error msg="[runner/typecheck] typechecking error: cannot find package \"XXXX/iss/*\" in any of:XXXX\\iss\\* (from $GOROOT)\n\tXXXX\\iss\\* (from $GOPATH)"
level=warning msg="[runner/megacheck] Can't run megacheck because of compilation errors in packages [xxxxx/iss/*]: -: cannot find package \"xxxx/iss/*\" in any of:\n\txxxx\\iss\\* (from $GOROOT)\n\txxxx\\iss\\* (from $GOPATH)"

2.正确使用方式

官网推荐三种使用方式:

  • golangci-lint run

  • golangci-lint run ./...

    这里...代表的就是检测目录下所有的文件

  • golangci-lint run dir1 dir2/... dir3/file1.go

golang 静态代码检测工具golangci-lint使用相关推荐

  1. 【代码质量】静态代码检测pc-lint, visual lint, cpp-check(pclint、cppcheck)

    [代码质量]静态代码检测pc-lint, visual lint, cpp-check(pclint.cppcheck)_bandaoyu的博客-CSDN博客 静态代码扫描工具汇总_ym & ...

  2. AndroidStudio静态代码检测工具Analyze Code

    工作中git正常流程中提交代码之后是需要同事或者leader进行代码review的,代码review不但包括逻辑是否正常还包括代码是否规范,写法是否会影响性能,是否添加了无用或者删除了有用代码,简直比 ...

  3. QT调试技巧-使用静态代码检测工具Cppcheck检测代码

    #QT调试技巧-使用静态代码检测工具Cppcheck检测代码 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 环境: Qt Creat ...

  4. android代码检测工具,大家好 给大家介绍一下 Android静态代码检测工具FireLine

    FireLine介绍 随着时间的推移,项目的代码量越来越大,而紧张的项目开发周期使得开发人员进行单元测试的时间少之又少.我仔细看了下最近几轮测试中测试人员提的缺陷单,大部分的bug其实归根到底都是由空 ...

  5. 【代码质量】静态代码检测pc-lint, visual lint, cpp-check(pclint、cppcheck、TscanCode)

    目录 引言 主流静态代码扫描工具概况 费用和活跃度 准确性对比 C/C++静态检测/静态分析|TscanCode|cppcheck TscanCode Windows下的安装与使用 Linux下的安装 ...

  6. c语言静态检测工具,静态代码检测工具---PC-lint(for c/c )

    近来由于项目的需要,本来想使用unstand c++或者C++ test来检查我们既有代码中函数申明与使用不一致的错误,因为sv项目是用纯C来写的,所以,编译时编译器看到.c后缀自动使用c编译器进行编 ...

  7. CppCheck:静态代码检测工具,让你的代码更安全

    除了官方GUI,还可支持与多种IDE(如VS.Eclipse.QtCreator)等集成使用. 主要功能: error:出现的错误 warning:为了预防bug防御性编程建议信息越 style:编码 ...

  8. cppcheck静态代码检测工具

    一.简介 cppcheck 是一种 C/C++ 代码缺陷静态检查工具.cppcheck 不检查代码中的语法错误,只检查编译器检查不出来的bug,其目的是检查代码中真正的错误.下边是在ubuntu环境下 ...

  9. qt自带静态代码检测工具_两款静态代码检测工具的对比

    测试背景 使用工具: 源伞科技Pinpoint Sonarqube 测试项目: 开源国产CMS软件iBase4J(6000行代码) 测试结果汇总 数据统计: SonarQube结果: 代码错误 安全隐 ...

最新文章

  1. addeventlistener事件第三个参数_简析JavaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序...
  2. activemq 控制台怎么看生产信息_Jmeter中间件处理-ActiveMQ
  3. 读书 | 一切红利最终都是趋势红利
  4. 百度android广告sdk下载,IS_Freedom
  5. symfony api 错误响应_Postman for Mac(API管理开发软件)
  6. linux上java解加密(AES/CBC)异常:java.lang.SecurityException: JCE cannot authenticate the provider BC办法
  7. carsim中质心加速度_振动CAE分析在空调压缩机支架设计中的应用
  8. 搭建分布式键值对文件系统FastDFS
  9. aspxgridview的取值
  10. 关于C语言goto的使用
  11. setUserVisibleHint-- fragment真正的onResume和onPause方法
  12. 解决新版本Vivado打开老工程IP锁住的问题
  13. Java冒泡排序代码实现
  14. python爬虫qq好友信息_qq好友空间说说爬虫
  15. 做VR需要UI设计师具备哪些能力?
  16. 2020-09-01:mysql里什么是检查点、保存点和中间点?
  17. 算法血拼:Google+百度+Alibaba+字节+Tencent+网易+360+拼夕夕
  18. 管理者如何正确激励员工、调动其工作积极性?
  19. linux mysql 修改密码
  20. 银行营业网点安全用电产品需求与方案

热门文章

  1. C语言程序:判断素数
  2. Python 使用xlrd库读取excel
  3. 如何在IDEA上配置使用Git
  4. android手游mod台湾论坛,台湾PTT论坛:PUBG板块或将改为大逃杀板块
  5. Python 实现 图片转 字符画,静态图、GIF 都能转
  6. Java微服务组件Spring cloud ribbon源码分析
  7. 斯坦福、伯克利、MIT、CMU、UIUC计算机专业概况
  8. JVM性能调优与实战进阶篇-上
  9. 如何在DAPP应用实现自带钱包转账功能?
  10. 升级iOSBeta版本