golang使用vet进行语法检查

简介: golang vet工具的使用 一般来说每一门语言都有一些用来进行语法检查的工具,vet就是golang中提供的语法检查工具,可以让我检查出package或者源码文件中一些隐含的错误,规范我们的项目代码,下面我简单讲解下该工具的使用.

golang vet工具的使用

一般来说每一门语言都有一些用来进行语法检查的工具,vet就是golang中提供的语法检查工具,可以让我检查出package或者源码文件中一些隐含的错误,规范我们的项目代码,下面我简单讲解下该工具的使用.


vet工具的路径

vet安装在每一个平台操作系统的 GOROOT/pkg/tools/ GOOS_$GOARCH/ 目录下, 例如我的Mac下就安装下面这个路径:

/usr/local/go/pkg/tool/darwin_amd64/vet   

每个平台的安装路都不相同,比如linux 32位下可能是:

/usr/local/go/pkg/tool/darwin_386/vet  

test

vet的使用

go vet 和 go tool vet基本上功能类似,go tool vet可以递归的对package进行语法检测,可以自行测试区别。

对一个.go源文件进行检查

下面的vet.go代码有一行语法错误,我们用go vet vet.go 检查

    package vet
    import (
        "fmt"
    )
    func vetTest() xxxxx{
        fmt.Println("vet test")
    }

运行结果如下:

test

一个包下所有源文件进行检测

go tool vet source/directory/*.go

对一个package进行语法检查

我们同样可以利用vet 对一个package进行检查,当然传入的包名必须是 相对路径 或者完整package。

例如我当前项目目录在$GOPATH/src/Test ,那么传入可以输入 go vet Test/vet 对vet包进行语法检查

这里写图片描述

如果我当前工作目录就是Test 那么我也可以直接输入 go vet ./vet 利用相对路径进行语法检查
这里写图片描述

不可以同时对package和源文件进行检查,但可以同时对多个包或者多个源文件进行检查

检测多个package

go vet  package1  package2    

检测多个源文件

go vet file1.go file2.go  

错误的用法

go vet file.go package1

附加tags

我们还可以给vet 传递一些 tag 来指定检测行为,默认是all,全部检查,当传入以下tag的时候all将被设置为false

使用方法

go vet -atomic=false test.go  

更多tag含义如下表,我从网上寻找,大家也可以去golang 官方去找 vet command的文档,里面更精确地描述。

tag 描述
-all 进行全部检查。如果有其他检查标记被设置,则命令程序会将此值变为false。默认值为true。
-asmdecl 对汇编语言的源码文件进行检查。默认值为false。
-assign 检查赋值语句。默认值为false。
-atomic 检查代码中对代码包sync/atomic的使用是否正确。默认值为false。
-composites 是否使用复合结构检查的白名单。仅供测试使用。默认值为true。
-compositeWhiteList 对汇编语言的源码文件进行检查。默认值为false。
-assign 检查赋值语句。默认值为false。
-methods 检查那些拥有标准命名的方法的签名。默认值为false。
-printf 检查代码中对打印函数的使用是否正确。默认值为false。
-printfuncs 需要检查的代码中使用的打印函数的名称的列表,多个函数名称之间用英文半角逗号分隔。默认值为空字符串。
-rangeloops 检查代码中对在range语句块中迭代赋值的变量的使用是否正确。默认值为false。
-structtags 检查结构体类型的字段的标签的格式是否标准。默认值为false。
-unreachable 查找并报告不可到达的代码。默认值为false。


本文参考自https://golang.org/cmd/vet/

目录
相关文章
|
6月前
|
Go
4.1 golang基础语法
4.1 golang基础语法
48 0
|
1月前
|
安全 Java Go
【Golang入门】简介与基本语法学习
Golang语言入门教程,介绍了Go语言的简介、基本语法、程序结构、变量和常量、控制结构、函数、并发编程、接口和类型、导入包、作用域以及错误处理等关键概念,为初学者提供了一个全面的学习起点。
25 0
|
3月前
|
Go 开发者 索引
Golang 中 for 循环的语法详解
【8月更文挑战第31天】
33 0
|
6月前
|
Go
Golang深入浅出之-Go语言基础语法:变量声明与赋值
【4月更文挑战第20天】本文介绍了Go语言中变量声明与赋值的基础知识,包括使用`var`关键字和简短声明`:=`的方式,以及多变量声明与赋值。强调了变量作用域、遮蔽、初始化与零值的重要性,并提醒读者注意类型推断时的一致性。了解这些概念有助于避免常见错误,提高编程技能和面试表现。
88 0
|
6月前
|
JSON 安全 Java
golang面试:golang基础语法(一)
golang面试:golang基础语法(一)
68 0
|
存储 人工智能 Java
深入了解Golang:基本语法与核心特性解析
深入了解Golang:基本语法与核心特性解析
|
安全 IDE Linux
【Golang】一文学完 Golang 基本语法
【Golang】一文学完 Golang 基本语法
54 0
|
Go
Golang语法入门指南
Go是一种现代、高效、并发的编程语言,被设计用于构建可靠且高性能的软件。它具有简单的语法和强大的标准库,适用于各种类型的应用程序开发。本博客将引导您快速入门Golang的基本语法,并提供一些实用的技巧和最佳实践。
90 0
|
存储 关系型数据库 MySQL
Golang基本语法-掘金课程笔记
Golang基本语法-掘金课程笔记
131 0
Golang基本语法-掘金课程笔记
|
Java Linux Go
知识分享之Golang——templates常用语法
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
163 0
知识分享之Golang——templates常用语法