使用 Go 和 SonarQube 进行静态 Golang 代码分析
介绍
编写代码时,无论是应用代码还是自动化代码,有一点是不变的:代码必须遵循最佳实践并根据最佳实践进行测试。否则,生产级代码可能会出现语法和安全问题。
本指南将介绍如何使用流行且免费的静态代码分析工具 SonarQube 测试 Golang 代码。
先决条件
要遵循本指南,您应该具备:
- 安装在 Windows 10 或 MacOS 上的 Docker 桌面
- Golang 版本 1.15 或更高版本。虽然此版本可能不是必需的,但这是本指南中使用的版本。
- 文本编辑器或 IDE。本指南将使用 Visual Studio Code (VS Code),您可以在此处找到。
创建 SonarQube Docker 容器
在开始静态代码分析之前,您需要启动并运行 SonarQube 环境。从开发环境的角度来看,最好的方法是通过本地主机上的 Docker 来实现。
要创建并运行 Docker 容器,请打开终端并使用以下命令。
docker run -d --name sonarqube -p 9000:9000 sonarqube
接下来,登录 Docker 容器。打开 Web 浏览器并转到以下链接。
http://localhost:90000
您应该看到 SonarQube 网络门户已启动并运行,如下面的屏幕截图所示。
登录SonarQube
要登录 SonarQube,默认用户名和密码是admin。
安装 SonarScanner
SonarScanner 是用于运行 SonarQube 测试的命令行工具。测试会将结果发送到 SonarQube 服务器,以便您查看。
要安装 SonarScanner,请打开 Web 浏览器并转到以下 URL。
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
选择您正在运行的操作系统并下载 SonarScanner。
将下载的文件保存到下一节中可以使用的位置,以便将 SonarScanner 添加到操作系统环境 $PATH。例如,您可以将其保存到桌面或文档文件夹。该位置必须是不会被删除的地方,因为 SonarScanner 将用于运行测试。
将 SonarScanner 添加到 $PATH
无论您使用的是 Windows 还是 MacOS,如果您不想不断地cd到 SonarScanner 路径来使用它,则需要将 SonarScanner 添加到环境 $PATH 中。
将以下目录添加到 $PATH。
location_of_download\sonar-scanner-version-operatingsystem\bin
您会在bin目录中找到该程序,这就是 $PATH 需要指向的位置,以便您可以从终端运行sonar-scanner 。
测试代码
当您测试 Golang 中的任何代码(包括使用静态代码分析)时,您必须确保进行适当的 Golang 测试。适当的 Golang 测试的关键属性是:
- 测试以_test.go结尾命名。例如,azure_auth_test.go
- 在 Golang 中设置的用于运行测试的函数以 Test 开头。例如,func TestAzureAuth(t *testing.T) {}
本示例中您将用来测试的代码是一个非常精简的示例。它并不是一个硬核的 Golang 测试,而是为了展示在 SonarQube 中进行测试的工作流程。
package Test
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestDemo(t *testing.T) {
one := "one"
two := "one"
assert.Equal(t, one, two, "the two variables should be the same value")
}
在桌面上创建一个名为Test 的目录,并将代码保存为目录中的my_test.go。虽然桌面位置不是强制性的,但本指南将遵循这一点。
创建新的SonarQube项目
当您想在本地或某种管道中运行静态代码分析测试时,您需要一个存放静态代码分析报告的场所。这就是项目发挥作用的地方。当您运行测试时,输出和结果将发送到 SonarQube 中的项目。
要创建新项目,请打开 Web 浏览器并转到 SonarQube 仪表板。
接下来,单击“项目”。
单击创建新项目按钮。
为了遵循此示例,请将您的项目命名为“Gotest”。命名后,单击“设置”按钮。
接下来,您需要生成一个令牌。该令牌允许您在运行 SonarQube 测试时从本地主机进行身份验证。将令牌命名为“Gotest”,然后单击“生成”按钮。
单击“继续”按钮并进入下一部分运行测试。
运行并检查测试
现在项目已经创建,是时候开始运行测试了。
在步骤 2 下,选择其他选项来运行 Golang 测试。
选择您正在运行的操作系统。
运行测试
复制sonar-scanner命令行以开始运行测试。命令行指定来自 SonarQube 的项目、主机 URL 和生成的令牌。
现在,转到命令行并进入从“要测试的代码”部分保存测试的目录。
进入测试所在的目录后,运行复制的sonar-scanner命令行。您应该会看到类似于下面的屏幕截图,表明执行成功。
检查测试
恭喜!您已成功在 Golang 上运行 SonarQube 测试
结论
当您决定编写任何代码时,代码质量对您和使用它的每个人都至关重要。谈到代码质量,您需要知道您编写的代码是否已准备好向世界发布。通过静态代码分析,您可以满意地知道您运行的代码已正确配置。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~