golang使用vet进行语法检查

golang vet工具的使用

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

  • golang vet工具的使用
    • vet工具的路径
    • vet的使用
      • 对一个go源文件进行检查
      • 一个包下所有源文件进行检测
      • 对一个package进行语法检查
      • 附加tags

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

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")
    }

运行结果如下:

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

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/

时间: 2024-08-01 07:40:09

golang使用vet进行语法检查的相关文章

Oracle MERGE语句语法检查不严格

测试发现即使在11.2中,这个问题仍然存在: SQL> SELECT * FROM V$VERSION; BANNER -------------------------------------------------------------------------------- Oracle Database11gEnterprise Edition Release11.2.0.1.0 - 64bit Production PL/SQL Release 11.2.0.1.0 - Product

怎样取消word2013拼写和语法检查

  取消拼写和语法检查步骤如下: 步骤1:如下图所示,这是标记某些不符合word中设置的规则的红波浪线和蓝波浪线: 步骤2:点击[文件]选项卡,如下图所示: 步骤3:点击[选项]选项卡,如下图所示: 步骤4:点击[校对]选项卡,如下图所示: 步骤5:把以下选项统统取消勾选,如下图所示: 步骤6:下图是效果图,波浪线已消除:

如何关闭Office拼写检查和语法检查

  Office办公软件中默认开启了自动拼写检查和自动语法检查,对于使用英语的用户来说,这可能会比较有用. 但对于使用中文的用户来说,各种红线波浪使版面混乱,并且被检查出错误的语句.字词可能并没有什么问题,既然如此,关闭它. 如何关闭Office办公软件中自动拼写检查和自动语法检查 注:以下方法同样适用于Office2007.2010.2013及单独的Word.Powerpoint.Excel.Outlook等程序. 以下以Office 2013中的Word为例: 1.打开任意一个doc.或者d

如何在Shell脚本中执行语法检查调试模式

我们开启了 Shell 脚本调试系列文章,先是解释了不同的调试选项,下面介绍如何启用 Shell 调试模式. 写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作. 在本系列的这一部分,我们将了解如何使用语法检查调试模式.记住我们之前在本系列的第一部分中解释了不同的调试选项,在这里,我们将使用它们来执行脚本调试. 启用 verbose 调试模式 在进入本指导的重点之前,让我们简要地探索下 verbose 模式.它可以用 -v 调试选项来启用,它会告诉 sh

如何在 Shell 脚本中执行语法检查调试模式

我们开启了 Shell 脚本调试系列文章,先是解释了不同的调试选项,下面介绍如何启用 Shell 调试模式. 写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作. 在本系列的这一部分,我们将了解如何使用语法检查调试模式.记住我们之前在本系列的第一部分中解释了不同的调试选项,在这里,我们将使用它们来执行脚本调试. 启用 verbose 调试模式 在进入本指导的重点之前,让我们简要地探索下 verbose 模式.它可以用 -v 调试选项来启用,它会告诉 sh

LanguageTool 1.7发布 字体和语法检查工具

LanguageTool 是一款开源的字体和语法检查工具,也作为一个错误检测软件使用,如:语法错误检查,但不包括拼写检查.目前的版本支持英语,波兰语,德语,法语,荷兰语和其他语言.它通过扫描文字来发现部分语言标签的错误模式,已定义在一个XML文件的文字.它可以用Java编写更强大的错误规则,其中文字拼写后的使用已得到纠正. LanguageTool 1.7该版本更新了几种语言包括法语.英语.布列塔尼语.俄语.世界语和德国的错误检测规则.此外,一些小错误已得到修复. 软件信息:http://www

LanguageTool 1.5发布 字体和语法检查工具

LanguageTool是一款开源的字体和语法检查工具,LanguageTool也作为一个错误检测软件使用,如:语法错误检查,但不包括拼写检查.目前的版本支持英语,波兰语,德语,法语,荷兰语和其他语言.它通过扫描文字来发现部分语言标签的错误模式,已定义在一个XML文件的文字.它可以用Java编写更强大的错误规则,其中文字拼写后的使用已得到纠正. LanguageTool 1.5版本错误检测规则已被添加或用几种语言更新.添加了四种新语言的初步支持(中文,他加禄语,布列塔尼语,和阿斯图里亚斯语).一

javascript使用eval或者new Function进行语法检查_javascript技巧

使用new Function( ) 来进行语法检查 eval( ) 方法是不能乱用的,在不适当的时候使用eval( ) 方法可能导致整个程序都会出问题的: 而new Function( ) 就没这么大问题.虽然new Function( ) 在任何情况下,构造的函数都是在全局作用域下直接工作的,但只作语法检查的话,并不会因为作用域问题而产生意外结果,只要你不直接调用通过它构造的新函数. 在eval( ) 接受的参数前面增加"0," 其实这是由于IE中存在一个bug.出于某种原因,如果你

Ajax基础教程(5)- 5.4 使用JSLint完成JavaScript语法检查

JSLint是一个JavaScript验证工具(www.jslint.com),可以扫描JavaScript源代码来查找问题.如果JSLint发现一个问题,JSLint就会显示描述这个问题的消息,并指出错误在源代码中的大致位置.有些编码风格约定可能导致未预见的行为或错误,JSLint除了能指出这些不合理的约定,还能标志出结构方面的问题.尽管JSLint不能保证逻辑一定正确,但确实有助于发现错误,这些错误很可能导致浏览器的JavaScript引擎抛出错误. JSLint定义了一组编码约定,这比EC