Go mod tidy удаляет линтеры с go.mod

В моем небольшом проекте у меня есть сценарий, который обеспечивает надлежащее качество кода путем выполнения статических проверок кода, например, я использую errcheck, чтобы убедиться, что я обрабатываю все ошибки в своем коде. В dep был специальный раздел для такого рода зависимостей, называемый required

Используйте это для: линтеров, генераторов и других инструментов разработки, которые:

  • Нужны вашему проекту
  • Не импортируются вашим проектом напрямую или транзитивно

Для модулей go я могу получить данную версию errcheck, выполнив: go get github.com/kisielk/[email protected]

Но затем он будет удален из go.mod, когда я выполню: go mod tidy. Можно ли избежать такой ситуации?


person Adam Szecowka    schedule 14.02.2020    source источник
comment
github.com/ golang / go / wiki /   -  person JimB    schedule 15.02.2020
comment
вы можете просто импортировать errcheck с _ вместо имени, поэтому goimports не удалит импорт и go mod tidy должен работать   -  person tclass    schedule 17.02.2020


Ответы (1)


В модулях Go в настоящее время нет различий между зависимостями «код», «тест» и «инструмент»: зависимость есть зависимость.

Если вы хотите записать определенную версию инструмента, вы можете добавить import пути к этому инструменту в исходный файл, который обычно исключается ограничения сборки, например // +build tools.

Например:

// +build tools

// Package tools records tool dependencies. It cannot actually be compiled.
package tools

import _ "github.com/kisielk/errcheck"

(Как заметил JimB, см. http://golang.org/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module для более подробной информации.)

person bcmills    schedule 16.03.2020