簡體   English   中英

文件不是 `gofmt`-ed with `-s`:為什么會發生這種情況以及如何解決它?

[英]File is not `gofmt`-ed with `-s`: why is this happening and how to resolve it?

每次在我們的存儲庫上打開或更新拉取請求時,我們都會使用通過 Github 操作工作流運行的 linter(用於 Golang)。

它最近開始返回以下 錯誤

File is not `gofmt`-ed with `-s` (gofmt)

在文件pkg/api/api/go其他 PR中發生的事情之后。
(編輯:添加鏈接以評估並最終重現錯誤)

證據:

原始提交

短絨輸出

我想了解這個錯誤的根源是什么,以及如何解決它?

錯誤來源

文件沒有按照 Go 規則正確格式化時,似乎可以返回此錯誤。

例如:如果您不小心使用了制表符縮進而不是空格。

編輯: blackgreen 的答案提供了有關錯誤來源的更准確的詳細信息


如何解決

您可以使用以下 Go 命令:

gofmt -s -w <path_to_file>.go

...然后提交代碼。

請注意,在我的情況下: gofmt -w pkg/api/api.go足以解決問題(沒有-s標志,我覺得奇怪,因為錯誤專門要求-s )。

來源 1 +來源 2

gofmt中的-s標志與格式化無關。 這是關於簡化代碼:

嘗試簡化代碼(在應用重寫規則后,如果有的話)。

您看到的警告來自golangci-lint 由於您聲稱已通過運行gofmt -w修復了錯誤,因此提示“with -s ”的存在可能是由於此錯誤: https://github.com/golangci/golangci-lint/issues/513

鏈接問題已於 2019 年修復,並隨v1.17.0一起發布。 您可能想檢查您的管道是否使用舊版本。

假設您的文件pkg/api/api.go觸發警告只是因為它沒有被格式化, gofmt -w解決了這個問題,因為-w覆蓋了文件:

如果文件的格式與 gofmt 不同,則用 gofmt 的版本覆蓋它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM