golang 静态代码检测工具golangci-lint使用
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使用相关推荐
- 【代码质量】静态代码检测pc-lint, visual lint, cpp-check(pclint、cppcheck)
[代码质量]静态代码检测pc-lint, visual lint, cpp-check(pclint.cppcheck)_bandaoyu的博客-CSDN博客 静态代码扫描工具汇总_ym & ...
- AndroidStudio静态代码检测工具Analyze Code
工作中git正常流程中提交代码之后是需要同事或者leader进行代码review的,代码review不但包括逻辑是否正常还包括代码是否规范,写法是否会影响性能,是否添加了无用或者删除了有用代码,简直比 ...
- QT调试技巧-使用静态代码检测工具Cppcheck检测代码
#QT调试技巧-使用静态代码检测工具Cppcheck检测代码 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 环境: Qt Creat ...
- android代码检测工具,大家好 给大家介绍一下 Android静态代码检测工具FireLine
FireLine介绍 随着时间的推移,项目的代码量越来越大,而紧张的项目开发周期使得开发人员进行单元测试的时间少之又少.我仔细看了下最近几轮测试中测试人员提的缺陷单,大部分的bug其实归根到底都是由空 ...
- 【代码质量】静态代码检测pc-lint, visual lint, cpp-check(pclint、cppcheck、TscanCode)
目录 引言 主流静态代码扫描工具概况 费用和活跃度 准确性对比 C/C++静态检测/静态分析|TscanCode|cppcheck TscanCode Windows下的安装与使用 Linux下的安装 ...
- c语言静态检测工具,静态代码检测工具---PC-lint(for c/c )
近来由于项目的需要,本来想使用unstand c++或者C++ test来检查我们既有代码中函数申明与使用不一致的错误,因为sv项目是用纯C来写的,所以,编译时编译器看到.c后缀自动使用c编译器进行编 ...
- CppCheck:静态代码检测工具,让你的代码更安全
除了官方GUI,还可支持与多种IDE(如VS.Eclipse.QtCreator)等集成使用. 主要功能: error:出现的错误 warning:为了预防bug防御性编程建议信息越 style:编码 ...
- cppcheck静态代码检测工具
一.简介 cppcheck 是一种 C/C++ 代码缺陷静态检查工具.cppcheck 不检查代码中的语法错误,只检查编译器检查不出来的bug,其目的是检查代码中真正的错误.下边是在ubuntu环境下 ...
- qt自带静态代码检测工具_两款静态代码检测工具的对比
测试背景 使用工具: 源伞科技Pinpoint Sonarqube 测试项目: 开源国产CMS软件iBase4J(6000行代码) 测试结果汇总 数据统计: SonarQube结果: 代码错误 安全隐 ...
最新文章
- addeventlistener事件第三个参数_简析JavaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序...
- activemq 控制台怎么看生产信息_Jmeter中间件处理-ActiveMQ
- 读书 | 一切红利最终都是趋势红利
- 百度android广告sdk下载,IS_Freedom
- symfony api 错误响应_Postman for Mac(API管理开发软件)
- linux上java解加密(AES/CBC)异常:java.lang.SecurityException: JCE cannot authenticate the provider BC办法
- carsim中质心加速度_振动CAE分析在空调压缩机支架设计中的应用
- 搭建分布式键值对文件系统FastDFS
- aspxgridview的取值
- 关于C语言goto的使用
- setUserVisibleHint-- fragment真正的onResume和onPause方法
- 解决新版本Vivado打开老工程IP锁住的问题
- Java冒泡排序代码实现
- python爬虫qq好友信息_qq好友空间说说爬虫
- 做VR需要UI设计师具备哪些能力?
- 2020-09-01:mysql里什么是检查点、保存点和中间点?
- 算法血拼:Google+百度+Alibaba+字节+Tencent+网易+360+拼夕夕
- 管理者如何正确激励员工、调动其工作积极性?
- linux mysql 修改密码
- 银行营业网点安全用电产品需求与方案