如何解决gosec 给出“无法导入 C没有 C 的元数据”golang 错误
我在我的项目上运行 gosec,但由于我们的管道失败而出现以下错误
文件中的 Golang 错误:[/home/usr/exmaple/project.go]:
[第 22 行:第 8 列] - 无法导入 C(没有 C 的元数据)
虽然 go build 命令成功构建项目意味着没有 golang 错误。
解决方法
这似乎也是其他人遇到的错误。请参阅 this issue 或 this one。您可能也应该为此向 gosec 报告问题。或者直接与 Go 存储库中的 go/packages
包有关。
这不是问题。
我们发现我们的 C 代码存在于包目录中的 .c 和 .h 文件中,其中 .h 文件仅包含函数原型。我们在 go 文件 (cgo) 中只包含 .h 文件。
go build 和 go test 命令正在工作,因为当在包目录中看到 .c 和 .h 时,这两个命令都会编译并链接它们。 但是 gosec 是一个 SAST 工具,它不编译包目录中存在的 .c 和 .h 文件,因为这个 gosec 扫描只获取函数原型而不是定义,并且抛出 Golang 错误无法导入 C(没有 C 的元数据)。
在注释 (CGO) 中包含整个代码有效。现在 gosec 工作正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。