跳到主要内容

sca

sca 库分析调用方提供的文件系统材料,识别组件、版本声明与依赖证据。

  • sca.ScanLocalFilesystem / sca.ScanFilesystem 扫描已经准备好的目录或虚拟文件系统。
  • sca.analyzers / sca.customAnalyzer 选择内置分析器或注入受信任回调;sca.scanMode / sca.concurrent 配置扫描。
  • SCA 不再获取 Docker 镜像、容器或 Git 历史。调用方自行准备材料;不同提交应分别扫描,分别保留快照标识。

识别结果可交给 cve/cwe 做关联。声明版本、校验记录与实际安装证据应分别解释。

共 7 个函数、27 个实例

实例​

实例名类型说明
ANALYZER_TYPE_APKanalyzer.TypAnalyzer"apk-pkg"
ANALYZER_TYPE_BUNanalyzer.TypAnalyzer"bun-lang"
ANALYZER_TYPE_CLANG_CONANanalyzer.TypAnalyzer"conan-lang"
ANALYZER_TYPE_DPKGanalyzer.TypAnalyzer"dpkg-pkg"
ANALYZER_TYPE_GO_BINARYanalyzer.TypAnalyzer"go-binary-lang"
ANALYZER_TYPE_GO_MODanalyzer.TypAnalyzer"go-mod-lang"
ANALYZER_TYPE_JAVA_GRADLEanalyzer.TypAnalyzer"gradle-lang"
ANALYZER_TYPE_JAVA_JARanalyzer.TypAnalyzer"jar-lang"
ANALYZER_TYPE_JAVA_POManalyzer.TypAnalyzer"pom-lang"
ANALYZER_TYPE_NODE_NPManalyzer.TypAnalyzer"npm-lang"
ANALYZER_TYPE_NODE_PNPManalyzer.TypAnalyzer"npmp-lang"
ANALYZER_TYPE_NODE_YARNanalyzer.TypAnalyzer"yarm-lang"
ANALYZER_TYPE_NUGETanalyzer.TypAnalyzer"nuget-lang"
ANALYZER_TYPE_PHP_COMPOSERanalyzer.TypAnalyzer"composer-lang"
ANALYZER_TYPE_PYTHON_PACKAGINGanalyzer.TypAnalyzer"python-packaging-lang"
ANALYZER_TYPE_PYTHON_PIPanalyzer.TypAnalyzer"python-pip-lang"
ANALYZER_TYPE_PYTHON_PIPENVanalyzer.TypAnalyzer"python-pipenv-lang"
ANALYZER_TYPE_PYTHON_POETRYanalyzer.TypAnalyzer"python-poetry-lang"
ANALYZER_TYPE_RPManalyzer.TypAnalyzer"rpm-pkg"
ANALYZER_TYPE_RUBY_BUNDLERanalyzer.TypAnalyzer"ruby-bundler-lang"
ANALYZER_TYPE_RUBY_GEMSPECanalyzer.TypAnalyzer"ruby-gemspec-lang"
ANALYZER_TYPE_RUST_CARGOanalyzer.TypAnalyzer"cargo-lang"
ANALYZER_TYPE_SWIFTanalyzer.TypAnalyzer"swift-lang"
ANALYZER_TYPE_UVanalyzer.TypAnalyzer"python-uv-lang"
MODE_ALLanalyzer.ScanMode0
MODE_LANGUAGEint4
MODE_PKGint2

函数索引​

函数参数返回值说明
sca.NewAnalyzerResultname string, version string*CustomPackage创建一个自定义分析结果(软件包),用于在自定义 SCA 分析器中返回识别到的组件

可变参数函数索引​

函数参数返回值说明
sca.ScanFilesystemp fs.FS, opts ...ScanOption[]*dxtypes.Package, error扫描给定的文件系统接口对象,识别其中的软件成分(SCA),返回检测到的软件包列表
sca.ScanLocalFilesystemp string, opts ...ScanOption[]*dxtypes.Package, error扫描本地文件系统目录,识别其中的软件成分(SCA),返回检测到的软件包列表

函数详情​

NewAnalyzerResult​

NewAnalyzerResult(name string, version string) *CustomPackage

创建一个自定义分析结果(软件包),用于在自定义 SCA 分析器中返回识别到的组件

在 yak 中通过 sca.NewAnalyzerResult 调用

参数

参数名类型说明
namestring软件包名称
versionstring软件包版本号

返回值

序号类型说明
r1*CustomPackage包含名称与版本的自定义软件包对象

示例

pkg = sca.NewAnalyzerResult("openssl", "1.1.1w")
println(pkg.Name) // OUT: openssl
println(pkg.Version) // OUT: 1.1.1w
assert pkg.Name == "openssl", "package name should be set"
assert pkg.Version == "1.1.1w", "package version should be set"

可变参数函数详情​

ScanFilesystem​

ScanFilesystem(p fs.FS, opts ...ScanOption) ([]*dxtypes.Package, error)

扫描给定的文件系统接口对象,识别其中的软件成分(SCA),返回检测到的软件包列表

在 yak 中通过 sca.ScanFilesystem 调用,可配合 filesys 包构造的各类文件系统使用

必填参数

参数名类型说明
pfs.FS实现 FileSystem 接口的文件系统对象(如 fsio.New(os.DirFS(".")) 等)

可选参数

可作为可变参数 opts ...ScanOption 传入选项;共 4 个可用选项,详见 ScanOption 选项列表。

返回值

序号类型说明
r1[]*dxtypes.Package检测到的软件包列表
r2error错误信息,输入文件系统为空或扫描失败时非 nil

示例

// 该示例为示意性用法:扫描任意文件系统接口对象
fs = fsio.New(os.DirFS("."))
pkgs = sca.ScanFilesystem(fs)~
println("packages:", len(pkgs))

ScanLocalFilesystem​

ScanLocalFilesystem(p string, opts ...ScanOption) ([]*dxtypes.Package, error)

扫描本地文件系统目录,识别其中的软件成分(SCA),返回检测到的软件包列表

在 yak 中通过 sca.ScanLocalFilesystem 调用,会根据各类包管理器清单(如 package.json、go.mod 等)解析依赖

必填参数

参数名类型说明
pstring待扫描的本地目录路径

可选参数

可作为可变参数 opts ...ScanOption 传入选项;共 4 个可用选项,详见 ScanOption 选项列表。

返回值

序号类型说明
r1[]*dxtypes.Package检测到的软件包列表
r2error错误信息,扫描失败时非 nil

示例

// 该示例为示意性用法:扫描本地项目目录的软件成分
pkgs = sca.ScanLocalFilesystem("/path/to/project")~

for pkg = range pkgs {
println(pkg.Name, pkg.Version)
}

可变参数选项列表​

以下按选项类型汇总全部可变参数选项(原先重复在各主函数下的选项表已收拢到此处):

1. 类型:ScanOption​

涉及到的函数有:sca.ScanFilesystem、sca.ScanLocalFilesystem

选项函数参数返回值说明
sca.analyzersa ...analyzer.TypAnalyzerScanOption指定本次扫描启用的分析器类型,仅运行所列分析器
sca.concurrentn intScanOption设置扫描时的并发 worker 数量
sca.customAnalyzermatchFunc func(info analyzer.MatchInfo) int, analyzeFunc func(fi *analyzer.FileInfo, otherFi map[string]*analyzer.FileInfo) []*analyzer.CustomPackageScanOption注册一个自定义 SCA 分析器,通过 matchFunc 决定是否处理某文件、analyzeFunc 产出软件包结果
sca.scanModemode analyzer.ScanModeScanOption设置扫描模式,控制识别全部成分、仅系统包或仅语言依赖