获取Go项目的所有依赖项

获取Go项目的所有依赖项,go,Go,对于我的项目,我试图获取项目的所有依赖项和子依赖项。我需要了解这些依赖项的具体版本。我不仅需要项目的依赖关系,还需要依赖关系的依赖关系等等,直到根 对于我的项目,go list-mall适用于除未选择使用go.mod文件的间接依赖项之外的所有内容。现在,我的工作流正在获取一批初始存储库,从git下载它们,然后使用“GO111MODULE=on-go-build./…”。和“GO111MODULE=on-go-list-m-json-all”来获取依赖项列表。我没有检查go.mod,因为我扫描的所

对于我的项目,我试图获取项目的所有依赖项和子依赖项。我需要了解这些依赖项的具体版本。我不仅需要项目的依赖关系,还需要依赖关系的依赖关系等等,直到根

对于我的项目,
go list-mall
适用于除未选择使用go.mod文件的间接依赖项之外的所有内容。现在,我的工作流正在获取一批初始存储库,从git下载它们,然后使用“GO111MODULE=on-go-build./…”。和“GO111MODULE=on-go-list-m-json-all”来获取依赖项列表。我没有检查go.mod,因为我扫描的所有存储库都使用go.mod文件

对于这个初始列表中的依赖项列表,我有一些问题,对于没有go.mod文件的文件,我将其用作参考:“

-Path=从
go list-m all
接收,它可以是GitHub、gopkg或用于dl go包的任何东西

没有go.mod

-“GO111MODULE=on go mod init <PATH from parent go.mod>”

-“GO111MODULE=on go build ./…”

-“GO111MODULE=on go mod tidy”

-“GO111MODULE=on go list -m -json all”

-From there I get a list of the dependencies of this module. 

我应该在每个具有go.mod文件的依赖项上运行
go build
?对于没有go.mod文件的用户,我知道应该这样做,否则我们将如何用依赖项填充go.mod文件。但是对于带有go.mod文件的文件,我是否会提取我的带有go build的项目不一定使用的额外内容,例如测试文件和其他文件,这些文件在我导入该项目时可能不会使用?我知道获得更多未使用的依赖项比丢失一些要好,但依赖项的数量如此之大,这让人有点不知所措

我可以尝试分析
go.sum
文件(当您执行
go list-u
时,创建了
go.sum

go命令使用go.sum文件确保这些模块的未来下载检索到与第一次下载相同的位,以确保项目所依赖的模块不会因恶意、意外或其他原因而意外更改。go.mod和go.sum都应检查到版本控制中。()

go.sum
文件列出了模块所需的直接依赖项和间接依赖项的校验和(以及版本标记)

% cat go.sum
...
github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q=
github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
...

无论包是否为模块,go list都可以工作。请不要使用-m标志。对于剩下的问题:没有什么可担心的,一切正常。未使用的依赖项不是问题,包中的内容,但在构建过程中未使用的依赖项也不是问题。理解该问题有一定困难。我认为答案是“不,我不认为您应该在每个使用go模块的dep上运行
go build
”。也许您可以从中更好地理解为什么:使用go list的问题是它没有显示所使用的依赖项的版本,这是我需要的,也是我使用-m标记的原因。它没有非模块依赖项版本的概念。它只了解模块的版本。是否有帮助:?
% cat go.sum
...
github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q=
github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
...