You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ORT分析GoMod管理的Go项目时无许可证信息如何解决

ORT分析Go项目依赖declared_licenses字段为空的解决方法

问题根因

单独执行ort analyze仅会完成依赖清单解析,输出项目的直接/传递依赖列表,不会主动采集、填充许可证信息,你看到的declared_licenses: []是默认输出状态,并非执行错误。许可证信息需要启用对应配置、补充扫描流程才能生成。

具体调整步骤

1. 修正执行路径与基础权限

  • 不要在ORT仓库根目录执行命令,先进入测试用Go项目的根目录(即go.mod文件所在层级),避免ORT识别到多类构建文件导致GoMod包管理器未正常触发。
  • 给当前挂载目录开放读写权限,避免容器内ORT进程无文件读写权限:
    chmod -R 755 $PWD
    
  • 若本地网络访问Go模块仓库受限,启动容器时追加可用的GOPROXY环境变量参数,保证依赖可以正常拉取。

2. 调整analyze命令参数,启用依赖元数据解析

将原分析命令替换为以下内容,开启Go依赖许可证元数据拉取配置:

docker run -v $PWD/:/project ort --info analyze \
  -i /project \
  -o /project/ort/analyzer \
  -P goMod.resolveDependencies=true \
  -P goMod.resolveLicenseMetadata=true

参数说明:

  • goMod.resolveDependencies=true:强制解析所有层级的传递依赖,避免默认跳过未直接引用的依赖项
  • goMod.resolveLicenseMetadata=true:拉取Go模块代理上存储的包声明许可证信息,直接填充declared_licenses字段

如果需要自定义许可证匹配规则,可以在项目下新建ort-config.yml配置文件,追加许可证文件匹配规则:

ort:
  licenseFilePatterns:
    GoMod:
      - "LICENSE*"
      - "COPYING*"
      - "NOTICE*"

执行命令时追加-c /project/ort-config.yml加载配置即可。

3. 补充扫描流程,生成检测到的许可证信息

declared_licenses仅记录包作者主动声明的许可证,若要获取代码中实际检测到的许可证信息,需要在analyze步骤后执行扫描命令:

docker run -v $PWD/:/project ort --info scan \
  -i /project/ort/analyzer/analyzer-result.yml \
  -o /project/ort/scanner \
  -s Licensee,Scancode

扫描完成后,输出目录下的scan-result.yml会同时包含声明许可证、代码扫描检测到的许可证两类信息。

4. 常见异常排查

如果执行完以上步骤字段仍为空,逐一排查以下问题:

  • 确认本地构建的ORT镜像未裁剪scanner、GoMod支持插件,使用官方预构建镜像可避免这类组件缺失问题
  • 确认容器网络可正常访问Go模块代理、公网许可证数据源,网络隔离环境需要提前配置ORT的包元数据镜像源
  • 确认测试项目的go.mod、go.sum文件完整,没有缺失依赖校验信息

内容的提问来源于stack exchange,提问作者user14580207

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:45:42