日常开发中,想要保证工程中代码能够正常运行, 一般都会使用vet进行代码静态扫描, 但是每次手动执行命令有点不太方便,如果在每次开发完成之后,git提交的时候都进行下检查就OK了,想好就干!!!

这里使用golangci-lint这个包: https://golangci-lint.run

golangci-lint 是一个代码检查工具的集合,聚集了多种 Go 代码检查工具,如 golintgo vet 等。

优点:

  • 运行速度快
  • 可以集成到 vscode、goland 等开发工具中
  • 包含了非常多种代码检查器
  • 可以集成到 CI 中

涉及linter: https://golangci-lint.run/usage/linters/

[安装]

# binary will be $(go env GOPATH)/bin/golangci-lint
curl -sSfL https://raw.githubusercontent.com/Goci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.42.1 golangci-lint --version

更多命令:

# 查看版本
golangci-lint version # 查看linter
golangci-lint help linters # 执行检查操作, 可指定目录
golangci-lint run [dir ...] # golangci-lint 可以通过 -E/--enable 去开启指定 linter,或者 -D/--disable 禁止指定 linter。
1golangci-lint run --disable-all -E errcheck
如上命令代表的就是除了 errcheck 的 linter,禁止其他所有的 linter 生效。 # golangci-lint 还可以通过 -p/--preset 指定一系列 linter 开启。
1golangci-lint run -p bugs -p error 如上命令代表的就是所有属于 bugs 和 error 分类的 linter 生效。 更多可以 golangci-lint run -h

  

[配置文件]

当前工作目录下添加配置文件,加载顺序:

  • golangci.yml

  • .golangci.yaml

  • .golangci.toml

  • .golangci.json

在 golangci-lint 官方文档 https://golangci-lint.run/usage/configuration/#config-file 中,提供了一个示例配置文件,非常地详细,在这其中包含了所有支持的选项、描述和默认值。

使用 pre-commit hook

在项目开发中,我们都会使用到 git,因此我们可以将代码静态检查放在一个 git 触发点上,而不用每次写完代码手动去执行 golangci-lint run 命令。这里,我们就需要用到 git hooks。

git hooks

git hooks 是 git 的一种钩子机制,可以让用户在 git 操作的各个阶段执行自定义的逻辑。git hooks  在项目根目录的 .git/hooks 下面配置,配置文件的名称是固定的,实质上就是一个个 shell 脚本。根据 git 执行体,钩子被分为客户端钩子和服务端钩子两类。

客户端钩子包括:pre-commitprepare-commit-msgcommit-msgpost-commit等,主要用于控制客户端git的提交工作流。服务端钩子:pre-receivepost-receiveupdate,主要在服务端接收提交对象时、推送到服务器之前调用。

注意,以 .sample 结尾的文件名是官方示例,这些示例脚本是不会执行的,只有重命名后才会生效(去除 .sample 后缀)。

[pre-commit]

试想,如果我们同时开发多个项目,也许项目的所采用的的编程语言并不一样,那么它们所需要的 git hooks 将不一致,此时我们是否要手动给每个项目都配置一个单独的 pre-commit 脚本呢,或者我们是否要去手动下载每一个钩子脚本呢。

实际上,并不需要这么麻烦。这里就引出了 pre-commit 框架,它是一个与语言无关的用于管理 git hooks 钩子脚本的工具

安装:

pip install pre-commit

# 查看版本
pre-commit --version

添加配置文件: .pre-commit-config.yaml

# 快速生成配置文件
pre-commit sample-config

查看支持的hooks: https://pre-commit.com/hooks.html

例如:

1repos:
2- repo: https://github.com/golangci/golangci-lint
3 rev: v1.41.1 # the current latest version
4 hooks:
5 - id: golangci-lint

安装git hook脚本

pre-commit install

将会安装到 .git/hooks/pre-commit

之后执行代码提交的时候, 就会自动触发并检查代码了

[集成到goland]

1.安装插件 Go Linter

2.添加文件监听  tool > file watchers + 添加刚才的插件golangci-lint

遇到的问题:

1.使用git提交的时候, 对于循环导包的问题无法验证到? 估计是执行命令的时候参数有问题, 这个后期再看下

golang之代码检查工具golangci-lint的更多相关文章

  1. 《Android Studio实用指南》7.1 AndroidStudio代码检查工具概述

    本文节选自<Android Studio实用指南> 作者: 毕小朋 目前本书已上传到百度阅读, 在百度中搜索[Anroid Studio实用指南]便可以找到本书. Android Stud ...

  2. 《Android Studio有用指南》7.1 AndroidStudio代码检查工具概述

    本文节选自<Android Studio有用指南> 作者: 毕小朋 博客: http://blog.csdn.net/wirelessqa 眼下本书已上传到百度阅读, 在百度中搜索[Anr ...

  3. PC-lint 简明教程(C/C++静态代码检查工具)

    前言 PC-lint是一款小而强大的C/C++静态代码检查工具,它可以检查未初始化变量,数组越界,空指针等编译器很难发现的潜在错误.在很多专业的软件公司如Microsoft,PC-Lint检查无错误无 ...

  4. [原创]Java静态代码检查工具介绍

    [原创]Java静态代码检查工具介绍 一  什么是静态代码检查? 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数 ...

  5. 最近开始研究PMD(一款采用BSD协议发布的Java程序代码检查工具)

    PMD是一款采用BSD协议发布的Java程序代码检查工具.该工具可以做到检查Java代码中是否含有未使用的变量.是否含有空的抓取块.是否含有不必要的对象等.该软件功能强大,扫描效率高,是Java程序员 ...

  6. Android 代码检查工具SonarQube

    http://blog.csdn.net/rain_butterfly/article/details/42170601 代码检查工具能帮我们检查一些隐藏的bug,代码检查工具中sonar是比较好的一 ...

  7. 【FLYabroad 】微软内部代码检查工具 (Microsoft Source Analysis for C#)[转]

    SourceAnalysis (StyleCop)的终极目标是让所有人都能写出优雅和一致的代码,因此这些代码具有很高的可读性. 早就听说了微软内部的静态代码检查和代码强制格式美化工具 StyleCop ...

  8. 静态代码检查工具 cppcheck 的使用

      CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们 ...

  9. 静态代码检查工具 cppcheck 的使用(可分别集成到VS和QT Creator里)

    CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们写的 ...

  10. 代码检查工具jshint和csslint

    前面的话 Douglas Crockford大神根据自己的理念用JavaScript写了一个JavaScript代码规范检查工具,这就是JSLint.后来非常流行,也的确帮助了广大的JavaScrip ...

随机推荐

  1. win10远程登录的账号密码

    win10有了一个windows hello,还有本地账号,还有microsoft账号 在 设置-账户信息 这里可以设置登录一个 Microsoft账号,然后远程登录的时候,用的是 Microsoft ...

  2. 6.24Win&linux&分析后门 勒索病毒分析

    操作系统应急响应 1.常见危害 暴力破解.漏洞利用.流量攻击(危害不确定) 木马控制(Webshell.PC木马等),病毒感染(挖矿.蠕虫.勒索等) 2.常见分析 计算机用户.端口.进程.启动项.计划 ...

  3. 技术解析 | ZEGO 移动端超分辨率技术

    ​ 即构超分追求:速度更快.效果更好.码率更低.机型更广. 超分辨率(Super Resolution, SR)是从给定的低分辨率(Low Resolution, LR)图像中恢复高分辨率(High ...

  4. 小tips:vue结合百度UEditor富文本编辑器实现vue-ueditor-wrap

    1.下载vue-ueditor-wrap cnpm i vue-ueditor-wrap -S 下载最新的 UEditor 资源文件放入你项目的静态资源目录中(比如 static 或者 public, ...

  5. 商业银行国际结算规模创新高,合合信息AI助力金融行业智能处理多版式文档

    随着我国外贸新业态的快速增长,银行国际结算业务在服务实体经济发展.促进贸易投资便利化进程中发挥了越来越重要的作用.根据中国银行业协会近日发布的<中国贸易金融行业发展报告(2023-2024)&g ...

  6. C# – 冷知识 (新手)

    替 Action/Func Parameter 设置名字 public static void MatchBracket(string value, string bracket, Action< ...

  7. eclipse安装及配置jdk、tomcat

    一.安装eclipse: (安装之前一定要确认jdk是否安装,没安装的一定要安装) 官网下载:Eclipse Downloads | The Eclipse Foundation 下载好如图安装程序: ...

  8. VS(visual studio) C++ 封装dll,以及其隐式调用与显式调用(静态\动态)

    DLL介绍 DLL(动态链接库,Dynamic Link Library)是一种可执行文件,它包含可以在其他程序中调用的函数和数据.他是Windows操作系统中的一个重要概念,用于代码共享和模块化. ...

  9. Flutter 因你更优秀 | 2021 第一季度开发者调研

    Flutter 终于在新的一年迎来了 2.0 版本,这是继 Dart 健全的空安全 Beta 版,以及 在测试方面取得重大进展 之后的一个全新的里程碑.在迈入这个新版本的当下,我们也已经准备好为大家带 ...

  10. 这才是批量update的正确姿势!

    前言 最近我有位小伙伴问我,在实际工作中,批量更新的代码要怎么写. 这个问题挺有代表性的,今天拿出来给大家一起分享一下,希望对你会有所帮助. 1 案发现场 有一天上午,在我的知识星球群里,有位小伙伴问 ...