您现在的位置是:首页 > 正文

golang 管道_必须具有用于golang构建管道的工具

2024-02-01 00:32:34阅读 2

golang 管道

Build pipelines have become one of the most important parts of every software development company, be it a new startup or an established tech giant.

无论是新成立的初创企业还是成熟的技术巨头,构建管道都已成为每个软件开发公司最重要的组成部分之一。

With CI/CD, your code may go at any time in production, hence you need your build tools to cover and find any potential problems that may have got missed by the developer or reviewer.

使用CI / CD,您的代码可以随时投入生产,因此您需要使用构建工具来覆盖并查找开发人员或审阅者可能遗漏的任何潜在问题。

Here are some potential tools that can not only save you some production problems but will also help with code cleanliness, typos, test coverage, and more.

这里有一些潜在的工具,这些工具不仅可以为您节省一些生产问题,而且还有助于代码清洁度,错别字,测试覆盖率等。

单元测试 (Unit Testing)

Unit testing is an important part of most go applications. Here are some tools which will make it easier

单元测试是大多数go应用程序的重要组成部分。 这里有一些工具,将使其更容易

Golang provides a built-in tool for performing unit tests on your go project. All you need to do is define your test functions in *_test.go files and run the following command in your project dir.

Golang提供了一个内置工具,可以在go项目中执行单元测试。 您需要做的就是在* _test.go文件中定义测试功能,然后在项目目录中运行以下命令。

$ go test -run ' ' #runs all tests

You can also run specific test cases by matching names of test cases as shown

您还可以通过匹配测试用例的名称来运行特定的测试用例,如下所示

$ go test -run Foo     # Run top-level tests matching "Foo", such as "TestFooBar".

Test Coverage

测试覆盖率

Test coverage is a technique that determines whether our test cases are actually covering the code and how much code is exercised when we run those test cases.

测试覆盖率是一种确定我们的测试用例是否真正覆盖了代码以及在运行这些测试用例时执行了多少代码的技术。

Go-test is capable of calculating test coverage per package and output it in various formats for you to analyze.

Go-test能够计算每个包装的测试覆盖率,并以各种格式输出以供您分析。

Checking test coverage for a package is easy

检查包装的测试范围很容易

$ go test -cover
PASS
coverage: 82.9% of statements
ok size 0.036s

But you may want more than that. Golang allows you to profile all your tests and view what code is untested.

但是您可能想要的还不止这些。 Golang允许您分析所有测试并查看未测试的代码。

$ go tool cover -func=coverage.out
size.go: Size 42.9%
total: (statements) 42.9%$ go tool cover -html=coverage.out

This command will open a browser window showing all the code which is not covered by the test cases. You can get this output for all the packages in your project and combine them.

此命令将打开一个浏览器窗口,显示所有未包含在测试用例中的代码。 您可以获取项目中所有软件包的输出,并将它们组合在一起。

$ for d in $(go list ./... | grep -v vendor); do 
go test -race -coverprofile=profile.out "$d";
if [ -f profile.out ]; then
cat profile.out >> coverage.txt;
rm profile.out;
fi;
done;

For more info, head over to the official Golang blog

有关更多信息,请转到Golang官方博客

整理和格式化(Linting and formatting)

Go Fmt is a tool that can automatically format your go code and can also detect unformatted files if needed. To format your code run

Go Fmt是一种工具,可以自动格式化您的go代码,并根据需要检测未格式化的文件。 格式化代码运行

gofmt -w yourcode.go

If formatting and pushing updated code is too difficult in the pipeline, you can throw an error with a list of files that are not formatted properly.

如果在管道中格式化和推送更新的代码太困难,则可能会出现错误,并列出未正确格式化的文件列表。

GOFMT_OUTPUT="$(gofmt -l . 2>&1)"        
if [ -n "$GOFMT_OUTPUT" ]; then
echo "All the following files are not correctly formatted"
echo "${GOFMT_OUTPUT}"
exit 1
fi

Golangci-lint is a linting tool made by the open-source community that aggregates various linters. It can detect unused variables, imports, unhandled errors, dead code, security flaws, and much more.

Golangci-lint是由开源社区制作的整理工具,用于汇总各种短绒。 它可以检测未使用的变量,导入,未处理的错误,无效代码,安全漏洞等。

To run golangci-lint, execute

要运行golangci-lint,请执行

$ 

You can also specify various configuration and select linters that you want to run on your code.

您还可以指定各种配置,并选择要在代码上运行的linter。

For more info, head over to the docs

有关更多信息,请转到文档

MissSpell is a general spell check tool for code, it does not works very well for Golang but does well with docs and comments in go code. Running it is easy

MissSpell是用于代码的常规拼写检查工具,它不适用于Golang,但可以与go代码中的文档和注释一起使用。 运行起来很容易

misspell -error -source=go dir/

Check out the repo for more info

查看仓库以获取更多信息

发布(Release)

GoReleaser automates releases for your application. This is especially helpful when you are building an open-source project. It can build binaries for all the architectures and automatically create git tags and releases for you. It also integrates well with jenkins, gitlabs , github so it can be nice addition to your pipeline.

GoReleaser使您的应用程序的发布自动化。 当您构建一个开源项目时,这特别有用。 它可以为所有架构构建二进制文件,并自动为您创建git标签和发行版。 它还与jenkins,gitlabs和github很好地集成在一起,因此可以很好地添加到您的管道中。

Head over to the quickstart to try it out

前往快速入门进行尝试

Appendix

附录

翻译自: https://medium.com/@arpitkh96/must-have-tools-for-your-golang-build-pipeline-deeee8f6b2d

golang 管道

网站文章

  • 【Docker】部署 SpringBoot 项目

    编写Dockerfile文件# 根据项目JDK版本自行调整FROM java:8# xxx为项目名ADD ./target/xxx-0.0.1-SNAPSHOT.jar xxx.jar# 配置容器的运...

    2024-02-01 00:32:04
  • LeetCode 733.[Python] 图像渲染 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。新

    733. 图像渲染 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的...

    2024-02-01 00:31:56
  • [置顶] C#执行Excel宏模版的方法

    在项目中如果涉及到用Excel开发的报表模版来导出报表数据的话,一般都是在Excel报表中使用VBA做成宏来进行调用。即先使用Excel自带的VBA开发好报表模版,然后再将模版程序放在固定目录下,在管理软件中对这些报表模版进行调用。这样就不需要使用其它报表工具来进行开发了,因为Excel功能比较强大,一般的应用的报表用它来开发绰绰有余了。而且这样开发的成本也很低,不需要再购买其它专业...

    2024-02-01 00:31:49
  • SpringBoot整合MybatisPlus(小白也秒懂)

    SpringBoot整合MybatisPlus(小白也秒懂)

    SpringBoot整合MybatisPlus

    2024-02-01 00:31:42
  • SLS机器学习最佳实战:日志聚类+异常告警

    SLS机器学习最佳实战:日志聚类+异常告警

    2019独角兽企业重金招聘Python工程师标准>>> ...

    2024-02-01 00:31:14
  • 在ubuntu系统中删除软件的三种最佳方法

    在ubuntu系统中删除软件的三种最佳方法

    三种方法分别是:1、通过软件中心删除 2、通过Synaptic Package Manager删除 3、通过命令行删除三种方法的详细介绍一、ubuntu software 1、点击左侧菜单栏上的“ubuntu software” 2、在软件中心界面,点击“installed”,可以列出已经安装过的软件。 3、软件右侧,有"remove"功能。 4、选中需要删除的软件,...

    2024-02-01 00:31:07
  • DataBinding实战(三)

    实战首先看一下之前代码public class Goods { public String name; public String details; public float price; public Goods(String name, String details, float price) { this.name = na...

    2024-02-01 00:31:00
  • 构建高效的软件测试知识体系

    2018年6月8日,作为第一届TMMi中国峰会圆桌会议的嘉宾,我参与讨论了“如何建立适合测试组织的测试规范体系”这个测试主题,其中分享了我对该话题的一些想法和经验。现在通过文章的方式将当时讲解的内容进行了一些归纳和总结,主要包括3个方面的内容: 1个故事:任何问题的解决都需要从过个层面考虑; 4个维度:构建高效的软件测试知识体系; 目标推动:综合应用4个维度推动测试目标的...

    2024-02-01 00:30:32
  • el-select 下拉框数量过多的处理方法之一

    Element-ui 下拉列表 选项过多时如何解决卡顿问题 当使用Select选择器时,如果下拉列表有几千个几万个,因此通过滚动条一个个的去找不是很现实, 这时可以对select设置filterable属性,可以在下拉控件里进行搜索。例如:

    2024-02-01 00:30:25
  • 带你正确认识Unicode和UTF-8

    带你正确认识Unicode和UTF-8

    前言 相信很多小伙伴跟我一样,之前很长一段时间对Unicode和UFT-8一直搞得不清不楚,等到用的时候就网上搜一搜,大概懂了点是什么,隔一段时间后又搞忘了,简直阔怕啊。今天我将带您轻轻松松出困境,用...

    2024-02-01 00:30:17