内容
<p align="center">
<img src="assets/bomly-cli-wordmark.svg" alt="Bomly CLI" width="240">
</p>
<p align="center">
<strong>分析您的软件DNA。</strong>
</p>
<p align="center">
<a href="https://github.com/bomly-dev/bomly-cli/actions/workflows/ci.yml"><img src="https://github.com/bomly-dev/bomly-cli/actions/workflows/ci.yml/badge.svg" alt="持续集成"></a>
<a href="https://scorecard.dev/viewer/?uri=github.com/bomly-dev/bomly-cli"><img src="https://api.scorecard.dev/projects/github.com/bomly-dev/bomly-cli/badge" alt="OpenSSF 评分卡"></a>
<a href="https://github.com/bomly-dev/bomly-cli/releases/latest"><img src="https://img.shields.io/github/v/release/bomly-dev/bomly-cli?sort=semver" alt="最新版本"></a>
<a href="https://github.com/bomly-dev/bomly-cli/releases"><img src="https://img.shields.io/github/downloads/bomly-dev/bomly-cli/total" alt="GitHub 发布下载量"></a>
<a href="LICENSE"><img src="https://img.shields.io/github/license/bomly-dev/bomly-cli" alt="许可证:Apache-2.0"></a>
<a href="https://pkg.go.dev/github.com/bomly-dev/bomly-cli"><img src="https://pkg.go.dev/badge/github.com/bomly-dev/bomly-cli.svg" alt="Go 参考"></a>
</p>
Bomly 是一个免费、开源的 CLI 工具,用于依赖项智能分析。它扫描源代码树、SBOM、Git 引用和容器镜像;解释依赖项存在的原因;丰富包的漏洞和许可证数据;评估策略;并为 CI 编写自动化友好输出。
单个二进制文件。无需托管服务。无需遥测。除非您选择使用 `--enrich`,否则不会进行外部匹配调用。
## 安装 Bomly
```bash
# macOS / Linuxbrew
brew install bomly-dev/tap/bomly
# Linux / macOS 安装脚本
curl -fsSL https://bomly.dev/install.sh | sh
# Windows
winget install Bomly.BomlyCLI
```
预编译的存档和 Linux 软件包从 [GitHub Releases](https://github.com/bomly-dev/bomly-cli/releases) 发布。发布版本包括 `bomly`(带有内置 Syft 和 Grype 的完整二进制文件)和 `bomly-lite`(较小的二进制文件,会调用外部 `syft` 和 `grype`)。
验证安装:
```bash
bomly version
```
有关 Linux 软件包、Scoop、Go 安装、校验和、固定版本、升级和卸载说明,请参阅 [安装](docs/INSTALLATION.md)。
## 从扫描开始
```bash
# 扫描当前项目
bomly scan
# 扫描特定目录
bomly scan --path ./services/api
# 扫描容器镜像
bomly scan --image ghcr.io/example/app:latest
# 扫描远程 Git 引用
bomly scan --url https://github.com/owner/repo --ref v1.2.3
# 读取现有的 SPDX 或 CycloneDX SBOM
bomly scan --sbom --path ./sbom.cdx.json
```
Bomly 读取清单、锁定文件、包管理器输出、容器层或现有的 SBOM,并将它们转换为一个依赖关系图。原生检测器涵盖 Go、npm、pnpm、Yarn、Maven、Gradle、Python、Composer、Bundler、GitHub Actions、SBOM 导入等。Syft 填补了长尾,包括容器镜像。参见 [支持矩阵](docs/SUPPORT_MATRIX.md) 和 [扫描目标](docs/SCAN_TARGETS.md)。
<p align="center">
<img src="assets/readme/scan-progress.png" alt="Bomly 扫描进度,显示索引的子项目、检测到的依赖项、丰富的包和解析的图" width="900">
</p>
## Bomly 可以回答的问题
| 问题 | 命令 |
| --- | --- |
| 我们依赖什么? | `bomly scan` |
| 此 PR 或分支有什么变化? | `bomly diff --base main --head HEAD` |
| 为什么存在此包? | `bomly explain lodash` |
| 哪些发现与策略相关? | `bomly scan --enrich --audit --fail-on high` |
| CI 是否可以在高严重性发现时失败? | `bomly scan --enrich --audit --fail-on high --format sarif` |
| 我可以优先检查可达的发现吗? | `bomly scan --enrich --audit --analyze --fail-on high --fail-on reachable` |
有关更多示例,请参阅 [快速入门](docs/GETTING_STARTED.md) 和 [用例](docs/USE_CASES.md)。
## 交互式探索
当您想手动检查图表时,请打开终端 UI:
```bash
bomly scan --interactive
```
使用它来模糊查找包、检查版本和范围、遍历发现,并查看依赖项如何进入图表,而无需将报告写入磁盘。参见 [交互式 TUI](docs/TUI.md)。
<p align="center">
<img src="assets/readme/tui-overview.png" alt="Bomly 交互式 TUI 概览,带有组件、漏洞、许可证、目标和分发面板" width="900">
</p>
## 丰富和审计
默认情况下,Bomly 不会调用漏洞、许可证、生命周期或评分卡服务。当您需要外部包智能时,请添加 `--enrich`:
```bash
# 获取漏洞和许可证数据
bomly scan --enrich
# 根据丰富的包数据评估策略
bomly scan --enrich --audit --fail-on high
# 添加实验性可达性分析
bomly scan --enrich --audit --analyze --fail-on high --fail-on reachable
```
内置的丰富功能使用公共服务,如 OSV、CISA KEV、deps.dev 和 OpenSSF Scorecard。`--audit` 评估包上已存在的漏洞和许可证数据;使用 `--enrich --audit` 时,您希望在一次运行中获取和评估。
可达性是实验性的。它对于分类很有用,但“不可达”并不是安全的保证。在将 `--fail-on reachable` 用作 CI 门控之前,请阅读 [可达性](docs/REACHABILITY.md)。
## 解释和差异
当出现传递包时,使用 `explain` 获取路径:
```bash
bomly explain requests
bomly explain lodash --path ./web
```
当您需要跨 Git 引用或 SBOM 审查依赖项更改时,请使用 `diff`:
```bash
# 比较 Git 引用
bomly diff --base main --head HEAD
# 比较两个 SBOM 文件
bomly diff --sbom --base ./old.spdx.json --head ./new.spdx.json
```
有关首次运行的演练,请参阅 [快速入门](docs/GETTING_STARTED.md),有关 PR 审查、升级审查和事件分类的示例,请参阅 [用例](docs/USE_CASES.md)。
## 为 CI 生成输出
Bomly 可以编写人类可读的文本、JSON、SARIF、SPDX 2.3 和 CycloneDX 1.6:
```bash
# 用于自动化的结构化 JSON
bomly scan --json
# 用于安全选项卡和代码扫描集成的 SARIF
bomly scan --enrich --audit --fail-on high --format sarif
# 在显示正常报告的同时写入 SBOM
bomly scan -o spdx=sbom.spdx.json -o cyclonedx=sbom.cdx.json
# 向 stdout 发出一个 SBOM
bomly scan --format cyclonedx
```
退出代码对于脚本是稳定的:`0` 表示干净的结果,`2` 表示策略冲突,分别表示用法、运行时和无支持项目失败的值。参见 [输出格式](docs/OUTPUT_FORMATS.md)、[SBOM 格式](docs/SBOM.md) 和 [退出代码](docs/EXIT_CODES.md)。
要控制拉取请求,请使用 [Bomly Guard 操作](https://github.com/bomly-dev/bomly-guard) 或直接从工作流调用 CLI。参见 [Bomly Guard](docs/BOMLY_GUARD.md) 和 [CI 集成](docs/CI_INTEGRATION.md)。
<p align="center">
<img src="assets/readme/guard-check.png" alt="GitHub 拉取请求检查,显示 Bomly Guard 失败的依赖项检查" width="900">
</p>
## 将 Bomly 与 AI 代理一起使用
Bomly 可以作为 MCP 服务器运行,以便 AI 代理可以调用与命令行相同的 `scan`、`explain` 和 `diff` 功能:
```bash
bomly mcp serve
```
将 Bomly 添加到与 Claude Code、Cursor、VS Code 或自定义工具等 MCP 感知代理中,代理接收结构化 JSON,它可以总结或推理。参见 [快速入门](docs/GETTING_STARTED.md) 以获取设置示例。
## 配置和扩展
Bomly 从全局配置、项目配置、`BOMLY_*` 环境变量和 CLI 标志中读取配置,后面的源具有更高的优先级:
1. `~/.bomly/config.yaml`
2. `<project>/.bomly/config.yaml`
3. `BOMLY_*` 环境变量
4. CLI 标志
使用 `--config <path>` 添加显式配置文件。参见生成的 [配置参考](docs/CONFIG_REFERENCE.md)。
托管插件允许您添加检测器、匹配器和审计器,而无需分叉 Bomly:
```bash
bomly plugins install github:bomly-dev/bomly-plugin-bun-lock-detector@v0.1.0
bomly plugins enable bomly.examples.detector.bun-lock
bomly plugins verify bomly.examples.detector.bun-lock
```
有关安装、信任和创作指南,请参见 [插件](docs/PLUGINS.md)。
## 文档
- [快速入门](docs/GETTING_STARTED.md) - 安装 Bomly 并运行您的第一个扫描
- [安装](docs/INSTALLATION.md) - 安装方法、校验和、升级、卸载
- [用例](docs/USE_CASES.md) - PR 门控、SBOM、分类和离线扫描的实用示例
- [扫描目标](docs/SCAN_TARGETS.md) - 目录、Git 仓库、容器和 SBOM
- [输出格式](docs/OUTPUT_FORMATS.md) - 文本、JSON、SARIF、SPDX、CycloneDX
- [SBOM 格式](docs/SBOM.md) - SPDX 2.3 和 CycloneDX 1.6、导入和转换示例
- [CI 集成](docs/CI_INTEGRATION.md) - GitHub Actions、GitLab、Jenkins、Azure、CircleCI
- [Bomly Guard](docs/BOMLY_GUARD.md) - 用于 PR 依赖项审查的交钥匙 GitHub 操作
- [可达性](docs/REACHABILITY.md) - 实验性可达性漏洞分类
- [插件](docs/PLUGINS.md) - 托管的外部检测器、匹配器和审计器
- [所有文档](docs/README.md) - 完整文档索引
贡献者设置位于 [CONTRIBUTING.md](CONTRIBUTING.md)。架构详细信息位于 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。
## 问题
对于问题、想法和一般支持,请使用 [Bomly 讨论](https://github.com/orgs/bomly-dev/discussions)。
仅将此存储库的问题用于确认的错误、回归或可操作的实现工作。
## 支持
Bomly 是一个开源项目。如果您觉得它有用,您可以通过给存储库加星、分享反馈、打开问题、贡献改进或赞助持续维护来支持该项目。
参见 [支持 Bomly](https://bomly.dev/support)。
## 许可证
Bomly CLI 在 [Apache License 2.0](LICENSE) 下获得许可。
连接信息
猜你喜欢
暂无推荐服务器