使用go get获得第三方许可证

时间:2019-07-10 15:47:08

标签: go

假设我们有一个go.mod文件,它定义了第三方依赖项。语言中是否有功能或方法来获取第三方许可列表,最好没有第三方工具?不幸的是,我无法共享任何代码,因为我尚未找到任何潜在的解决方案。

例如,我们有:

module github.com/myGoProject

require (
    github.com/sirupsen/logrus v1.4.2
    github.com/stretchr/testify v1.2.2
)

如何获得输出:

  

麻省理工学院

     

麻省理工学院

1 个答案:

答案 0 :(得分:3)

我最近也必须这样做,但是没有找到任何“官方”方式。我使用了一个名为go-license-detector的工具来对抗供应商提供的第三方依赖项,以自动完成大部分工作。

  1. 安装https://github.com/src-d/go-license-detector。此工具扫描目录以查找 许可证文件,并确定它们(可能)是什么许可证。
  2. 通过运行go mod vendor下载所有第三方库依赖项的源代码。这会将依赖项的所有源代码放入名为“ vendor”的目录中。
  3. cd进入供应商目录并运行:

    license-detector `cat modules.txt |grep "^#" |cut -d' ' -f2`

这将对每个下载的模块运行license-detector,并输出每个模块的可能许可证列表。您将获得如下所示的输出:

github.com/influxdata/influxdb
    91% MIT
github.com/influxdata/platform
    99% MIT
    84% MIT-feh
github.com/kr/logfmt
    100%    Unlicense
    98% MIT
    93% JSON
    84% MIT-feh

通常,最高许可证是正确的许可证,但是最好仔细检查每个许可证。