iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Go代码检查的推荐工具及使用详解
  • 741
分享到

Go代码检查的推荐工具及使用详解

2024-04-02 19:04:59 741人浏览 独家记忆
摘要

目录1. Golint2. golangci-lint3. Go-reporter1. Golint (1)安装golint git clone htt

1. Golint

(1)安装golint

git clone https://GitHub.com/golang/lint.git 
cd lint/golint
go install

(2)使用方式

# 检查单个文件
golint service.go
# 检查当前目录所有.go文件,不会递归查找
golint

(3)golint校验规则

  • 不能使用下划线命名法,使用驼峰命名法
  • 外部可见程序结构体、变量、函数都需要注释
  • 通用名词要求大写 iD/Id -> ID Http -> HTTP JSON -> jsON Url -> URL Ip -> IP sql -> SQL
  • 包命名统一小写不使用驼峰和下划线
  • 注释第一个单词要求是注释程序主体的名称,注释可选不是必须的
  • 外部可见程序实体不建议再加包名前缀
  • if语句包含return时,后续代码不能包含在else里面
  • errors.New(fmt.Sprintf(…)) 建议写成 fmt.Errorf(…)
  • receiver名称不能为this或self
  • receiver名称不能为this或self
  • 错误变量命名需以 Err/err 开头
  • a+=1应该改成a++,a-=1应该改成a--

(4)检查的结果示例如下:

middlewares.go:29:6: exported type xxxInstrumentingMiddleware should have comment or be unexported
middlewares.go:41:1: error should be the last type when returning multiple items
middlewares.go:41:1: exported method xxxInstrumentingMiddleware.Creativexxx should have comment or be unexported
middlewares.go:88:1: error should be the last type when returning multiple items
middlewares.go:88:1: exported method xxxInstrumentingMiddleware.CreativexxxRTB should have comment or be unexported
middlewares.go:135:1: error should be the last type when returning multiple items
middlewares.go:135:1: exported method xxxInstrumentingMiddleware.UpdateConf should have comment or be unexported
middlewares.go:141:1: error should be the last type when returning multiple items
middlewares.go:141:1: exported method xxxInstrumentingMiddleware.GetConf should have comment or be unexported
middlewares.go:147:1: exported function NewWrappedxxxInstrumentingMiddleware should have comment or be unexported
middlewares.go:218:6: exported type xxxInstrumentingMiddleware should have comment or be unexported
middlewares.go:225:1: exported method xxxInstrumentingMiddleware.Predictgrpc should have comment or be unexported
middlewares.go:250:1: exported function NewxxxInstrumentingMiddleware should have comment or be unexported
middlewares.go:281:6: exported type xxxxxxInstrumentingMiddleware should have comment or be unexported
middlewares.go:288:1: exported method xxxxxxInstrumentingMiddleware.PredictGrpc should have comment or be unexported
middlewares.go:288:116: method parameter appId should be appID
middlewares.go:306:1: exported function NewxxxxxxInstrumentingMiddleware should have comment or be unexported
xxx_callee.go:1:1: package comment should be of the fORM "Package xxxservice ..."
xxx_callee.go:1:1: package comment should not have leading space
xxx_callee.go:1:1: package comment should be of the form "Package xxxservice ..."
xxx_callee.go:1:1: package comment should not have leading space
xxx_callee.go:1:1: package comment should be of the form "Package xxxservice ..."
xxx_callee.go:1:1: package comment should not have leading space
xxx_callee.go:38:96: method parameter appId should be appID
service.go:124:5: exported const xxxLevelLowerLimit should have comment (or a comment on this block) or be unexported
service.go:134:6: exported type xxxTdbankConfig should have comment or be unexported
service.go:138:6: exported type xxxConfig should have comment or be unexported
service.go:152:6: exported type xxxResponse should have comment or be unexported
service.go:162:6: exported type xxxMetaDataCache should have comment or be unexported
service.go:515:1: error should be the last type when returning multiple items
service.go:592:9: range var appId should be appID
service.go:604:16: range var appIdStr should be appIDStr
service.go:609:17: var appId should be appID
service.go:688:13: range var appId should be appID
service.go:801:13: range var appId should be appID
service.go:806:13: var behaviorGameIdList should be behaviorGameIDList

IDE集成工具参考:https://www.jb51.net/article/229273.htm

2. GolanGCi-lint

(1)安装golangci-lint

curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.41.1
golangci-lint --version

(2)使用方式

# 检查单个文件
golangci-lint run service.go
# 指定目录
golangci-lint run internal/
# 检查当前目录所有.go文件,会递归查找当前目录及子目录
golangci-lint run

(3)golangci-lint校验规则

golangci-lint运行时会在当前目录查找配置文件

  • golangci.yml
  • .golangci.yaml
  • .golangci.toml
  • .golangci.json

具体配置参考:

https://golangci-lint.run/usage/configuration/

(4)检查的结果示例如下,-v参数可以看到更详细的检查结果

# golangci-lint run -v service/service.go
INFO [config_reader] Config search paths: [./ /data/xxx/code/xxx/internal/xxx/service /data/xxx/code/xxx/internal/xxx /data/xxx/code/xxx/internal /data/xxx/code/xxx /data/xxx/code /data/xxx /data / /root]
INFO [lintersdb] Active 10 linters: [deadcode errcheck gosimple govet ineffassign staticcheck structcheck typecheck unused varcheck]
INFO [loader] Go packages loading at mode 575 (compiled_files|exports_file|name|types_sizes|deps|files|imports) took 448.248885ms
INFO [runner/filename_unadjuster] Pre-built 0 adjustments in 7.130535ms
INFO [linters context/goanalysis] analyzers took 4.744573ms with top 10 stages: buildir: 629.354µs, fact_deprecated: 514.772µs, inspect: 435.291µs, ctrlflow: 362.378µs, typedness: 353.563µs, printf: 345.2µs, SA5012: 345.028µs, fact_purity: 333.959µs, nilness: 333.457µs, isgenerated: 28.152µs
INFO [runner/max_same_issues] 1/4 issues with text "undeclared name: `ModelInstrumentingMiddleware`" were hidden, use --max-same-issues
INFO [runner/max_same_issues] 1/4 issues with text "undeclared name: `NewModelInstrumentingMiddleware`" were hidden, use --max-same-issues
INFO [runner] Issues before processing: 2608, after processing: 9
INFO [runner] Processors filtering stat (out/in): skip_files: 2608/2608, max_from_linter: 9/9, path_shortener: 9/9, path_prefixer: 9/9, skip_dirs: 2608/2608, identifier_marker: 2608/2608, exclude: 2608/2608, nolint: 2608/2608, diff: 11/11, max_per_file_from_linter: 11/11, severity-rules: 9/9, sort_results: 9/9, filename_unadjuster: 2608/2608, path_prettifier: 2608/2608, autogenerated_exclude: 2608/2608, exclude-rules: 2608/2608, source_code: 9/9, cgo: 2608/2608, uniq_by_line: 11/2608, max_same_issues: 9/11
INFO [runner] processing took 103.631607ms with stages: exclude-rules: 61.093674ms, identifier_marker: 32.814984ms, nolint: 7.481643ms, path_prettifier: 1.299346ms, skip_dirs: 217.899µs, uniq_by_line: 187.231µs, source_code: 145.003µs, filename_unadjuster: 132.84µs, cgo: 117.621µs, autogenerated_exclude: 93.646µs, max_same_issues: 37.831µs, path_shortener: 2.715µs, max_from_linter: 2.375µs, max_per_file_from_linter: 1.845µs, exclude: 621ns, severity-rules: 511ns, sort_results: 490ns, skip_files: 471ns, diff: 470ns, path_prefixer: 391ns
INFO [runner] linters took 434.383892ms with stages: goanalysis_metalinter: 330.666778ms
service/service.go:72:29: undeclared name: `ModelInstrumentingMiddleware` (typecheck)
    xxxService            *ModelInstrumentingMiddleware
                            ^
service/service.go:73:29: undeclared name: `ModelInstrumentingMiddleware` (typecheck)
    xxxCalibrationService *ModelInstrumentingMiddleware
                            ^
service/service.go:74:29: undeclared name: `ModelInstrumentingMiddleware` (typecheck)
    xxxCalibrationService *ModelInstrumentingMiddleware
                            ^
service/service.go:76:29: undeclared name: `xxxModelInstrumentingMiddleware` (typecheck)
    xxxService             *xxxModelInstrumentingMiddleware
                            ^
service/service.go:412:33: undeclared name: `NewModelInstrumentingMiddleware` (typecheck)
        xxxService:            NewModelInstrumentingMiddleware(NewxxxService(logger), "xxx_MODEL"),
                                ^
service/service.go:413:33: undeclared name: `NewModelInstrumentingMiddleware` (typecheck)
        xxxCalibrationService: NewModelInstrumentingMiddleware(NewxxxCalibrationService(logger), "xxx_CALIBRATION_MODEL"),
                                ^
service/service.go:414:33: undeclared name: `NewModelInstrumentingMiddleware` (typecheck)
        xxxService:            NewModelInstrumentingMiddleware(NewxxxService(logger), "xxx_MODEL"),
                                ^
service/service.go:416:33: undeclared name: `NewxxxModelInstrumentingMiddleware` (typecheck)
        xxxService:             NewxxxModelInstrumentingMiddleware(NewxxxService(logger), "xxx_MODEL"),
                                ^
service/service.go:448:17: undeclared name: `NewWrappedxxxInstrumentingMiddleware` (typecheck)
    wapedSvc := NewWrappedxxxInstrumentingMiddleware(svc)
                ^
INFO File cache stats: 1 entries of total size 183.6KiB
INFO Memory: 10 samples, avg is 70.1MB, max is 128.1MB
INFO Execution took 893.716ms

3. Go-reporter

github地址:https://github.com/qax-os/goreporter

1)安装codestyle

# golang版本需要 >=1.6
yum -y install graphviz
go get -u github.com/360EntSecGroup-Skylar/goreporter

(2)使用方式

# 展示指令可用参数
goreporter -p [projectRelativePath] -r [reportPath] -e [exceptPackagesName] -f [json/html/text]  {-t templatePathIfHtml}
-version Version of GoReporter.
-p Must be a valid Golang project path.
-r Save the path to the report.
-e Exceptional packages (multiple separated by commas, for example: "linters/aligncheck,linters/cyclo" ).
-f report format json, html OR text.
-t Template path,if not specified, the default template will be used.
By default, the default template is used to generate reports in html format.

以上就是Go代码检查的推荐工具及使用详解的详细内容,更多关于Go代码检查工具的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: Go代码检查的推荐工具及使用详解

本文链接: https://www.lsjlt.com/news/120951.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go代码检查的推荐工具及使用详解
    目录1. Golint2. Golangci-lint3. Go-reporter1. Golint (1)安装golint git clone htt...
    99+
    2024-04-02
  • 七种Python代码审查工具推荐
    目录1. DeepSource 2. Codacy3. SonarQube 4. Veracode 5. Checkmarx 6. Coverity 7. CodeScene 小结 ...
    99+
    2024-04-02
  • Go源码字符串规范检查lint工具strchecker使用详解
    目录1.背景2.strchecker介绍3.结论1.背景 在大型项目开发过程中,经常会遇到打印大量日志,输出信息和在源码中写注释的情况。对于软件开发来说,我们一般都是打印输出英文的日...
    99+
    2024-04-02
  • IDEA中的代码检查工具怎么使用
    使用 IDEA 中的代码检查工具可以帮助开发者找出代码中的潜在问题和优化代码质量。以下是在 IDEA 中使用代码检查工具的步骤: ...
    99+
    2024-04-03
    IDEA
  • PHP中的代码检查工具
    检查代码质量是每个程序员都必须要做的任务,而PHP中也有很多工具可以用于检查代码的质量和风格,从而提高代码的可读性和可维护性,提高代码的可靠性和安全性。本文将介绍几种常见的PHP代码检查工具,并对它们进行简单的比较和评估,希望可以帮助读者在...
    99+
    2023-05-24
    PHPUnit PHP_CodeSniffer PHPMD
  • Java代码检查工具之PMD的使用方法
    小编给大家分享一下Java代码检查工具之PMD的使用方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!介绍PMD是一个静态源代码分析器。它发现了常见的编程缺陷,如...
    99+
    2023-06-14
  • Java 代码检查工具之PMD入门使用详细教程
    目录介绍使用方式1、使用插件的方式2、maven项目引入依赖的方式3、pmd 命令行的方式4、Java API的方式 *项目结构测试代码pmdArgs方式PMDConfigurati...
    99+
    2024-04-02
  • JS代码检查工具ESLint怎么用
    这篇文章主要介绍了JS代码检查工具ESLint怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ESLint不但提供一些默认的规则,也提供...
    99+
    2024-04-02
  • 详解推荐使用systemd timer替代cronjob
    目录概述系统自带的 timer创建 timerSystemd timer 时间精度Timer 类型Calendar event 定义测试 calendar 定义总结概述 前几天在使用...
    99+
    2023-05-14
    systemd timer替代cronjob systemd timer
  • PHP中封装性的代码质量检查工具
    封装性是面向对象编程的重要原则之一,它可以帮助我们更好地管理代码,减少代码的耦合性,提高代码的可维护性和可复用性。在PHP开发中,为了保证代码的封装性,我们可以借助一些代码质量检查工具来进行静态代码分析。本文将介绍一款常用的PHP代码质量检...
    99+
    2023-10-21
    PHP代码质量 封装性检查工具 PHP代码检查
  • go性能分析工具pprof的用途及使用详解
    目录pprof的用途利用runtime/pprof包实现cpu分析的步骤利用runtime/pprof包实现内存分析的步骤:利用net/http/pprof包进行性能分析总结&nbs...
    99+
    2023-01-06
    go性能分析工具 go 性能 go pprof 性能分析
  • php质量检查工具 phpmd的使用
    PHPMD简介 团队在使用php-cs-fixer 代码格式自动式化工具之后,在格式,代码错误等方面带来了很大便利,不过在命名,代码质量,代码复杂度,缺少一些检查,在网上搜索后,发现PHPMD 一个PHP代码静态分析工具. 安装 官方网站 ...
    99+
    2023-09-05
    php phpmd
  • JetCache 缓存框架的使用及源码解析(推荐)
    目录一、简介为什么使用缓存?使用场景使用规范二、如何使用引入maven依赖添加配置配置说明注解说明@EnableCreateCacheAnnotation@EnableMethodC...
    99+
    2024-04-02
  • 第38篇:Checkmarx代码审计/代码检测工具的使用教程(1)
     Part1 前言  Checkmarx是以色列研发的一款代码审计工具,是.NET开发的,只能在Windows下使用。很多人喜欢把它和fortify进行比较,其实很难说两款工具孰优孰劣,各有秋千吧,两款工具配合起来互补一下更好。Che...
    99+
    2023-10-11
    sqlserver 数据库 服务器
  • 将自然语言查询转换为SQL代码的AI工具使用详解
    目录介绍功能本地安装使用仓库地址介绍 人工智能可以帮助我们实现将自然语言查询和 SQL 代码进行互相转换,这种技术通过自然语言处理(NLP)和机器学习,训练模型来理解和生成自然语言...
    99+
    2023-03-20
    自然语言查询转换SQL AI工具转换代码
  • 如何使用vimdiff代替svn diff的查看代码工具
    这篇文章给大家分享的是有关如何使用vimdiff代替svn diff的查看代码工具的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在linux下,直接使用svn diff命令查看代码的修改是很吃力的,于是在网上搜索...
    99+
    2023-06-10
  • 详解Go语言中io/ioutil工具的使用
    目录读取文件写文件读取文件夹下所有文件信息创建临时文件和临时文件夹拷贝文件小结学习笔记,写到哪是哪。 接着上一篇,我们看看io/ioutil工具如何使用,简化文件操作。 读取文件 读...
    99+
    2024-04-02
  • 基于PHP的PSR2和PSR4规范的代码规范检查工具
    引言:在软件开发过程中,良好的代码规范是保证程序质量和可维护性的重要因素。为了帮助开发人员遵循PHP代码规范,PHP-FIG(PHP Framework Interop Group)提出了PSR(PHP Standards Recommen...
    99+
    2023-10-21
    PHP PSR
  • 如何使用gosec检查Go代码中的安全问题
    这期内容当中小编将会给大家带来有关如何使用gosec检查Go代码中的安全问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Go 语言 写的代码越来越常见,尤其是在容器、Kubernetes 或云生态相关的...
    99+
    2023-06-17
  • 【FTP工具】FileZila安装以及使用详解
    一、FTP概念 安装FTP主要是为了传输文件,FTP是持久的,只有一次认证过程,传输多个文件都是使用同一个连接。因为FTP就是为远程文件交互而设计的,有些时候只是为了单纯做一个文件传输,往往搭建FTP服务更省时和节约成本。FTP(File ...
    99+
    2023-08-18
    服务器 FTP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作