endrilickollari/debtdrone-cli

GitHub: endrilickollari/debtdrone-cli

一款基于 AST 解析的技术债务分析工具,提供交互式 TUI 与无头 CLI 以在开发与 CI/CD 中识别并治理复杂度与安全债务。

Stars: 12 | Forks: 0

# 🚁 DebtDrone CLI ![Go Version](https://img.shields.io/github/go-mod/go-version/endrilickollari/debtdrone-cli) ![Build Status](https://img.shields.io/github/actions/workflow/status/endrilickollari/debtdrone-cli/ci.yml?branch=main) ![License](https://img.shields.io/github/license/endrilickollari/debtdrone-cli) ![Release](https://img.shields.io/github/v/release/endrilickollari/debtdrone-cli) **DebtDrone CLI** 是一个闪电般快速、高度可配置的技术债务分析器。 采用 **六边形架构**,DebtDrone 以单个静态链接的 Go 二进制文件分发,提供两个截然不同的用途: 1. **交互式 TUI**:一个美观、响应迅速的终端界面,供开发者在本地探索代码复杂度。 2. **无头 CLI**:一个健壮、可直接用于 CI/CD 流程的可执行文件,支持严格的质量门禁和 JSON 输出。 ## ✨ 功能 ### 🎨 交互式 TUI(面向人类) 基于 [Bubble Tea](https://github.com/charmbracelet/bubbletea) 和 [Lipgloss](https://github.com/charmbracelet/lipgloss) 构建。 * **主-详情浏览器**:无需文本截断,轻松浏览数百个问题。 * **历史追踪**:查看过往扫描记录,跟踪债务随时间是减少还是增长。 * **内联配置**:直接在终端中修改阈值和规则,无需触碰 Vim。 * **无缝更新**:内置自动更新器,支持变更日志弹窗(`/update`)。 ### 🤖 无头 CLI(面向机器) 基于 [Cobra](https://github.com/spf13/cobra) 构建。 * **CI/CD 质量门禁**:使用 `--fail-on` 在引入新的严重或高级债务时自动失败构建流水线。 * **结构化输出**:导出结果为标准文本表格或机器可读的 JSON(`--format=json`)。 * **确定性执行**:绕过所有交互式提示,确保流水线不会挂起。 * **配置即代码**:提交 `.debtdrone.yaml` 到仓库,确保本地与流水线扫描使用完全相同的规则集。 ## 🚀 安装 **通过 Homebrew(推荐):** ``` brew install endrilickollari/tap/debtdrone ``` **通过 Shell 脚本(Mac/Linux):** ``` curl -sL https://raw.githubusercontent.com/endrilickollari/debtdrone-cli/main/installation_scripts/install.sh | bash ``` **通过 PowerShell(Windows):** ``` iwr -useb https://raw.githubusercontent.com/endrilickollari/debtdrone-cli/main/installation_scripts/install.ps1 | iex ``` **通过 Go 安装:** ``` go install github.com/endrilickollari/debtdrone-cli/cmd/debtdrone@latest ``` **通过预编译二进制文件:** 请查看 [发布页面](https://github.com/endrilickollari/debtdrone-cli/releases) 获取适用于 macOS、Linux 和 Windows 的静态二进制文件。 ## 🎮 用法:交互式 TUI 要启动交互式仪表板,只需不带任何参数运行该工具: ``` debtdrone ``` ### TUI 命令与导航 进入 TUI 后,你可以使用标准的 Vim 绑定(`j`/`k`)进行导航。使用命令栏在不同模块间跳转: * `/scan` - 在当前目录启动新的技术债务扫描。 * `/history` - 查看过往扫描及其严重性分布。 * `/config` - 打开设置应用以调整全局或仓库特定的阈值。 * `/update` - 检查新版本并就地安装。 ## ⚙️ 用法:无头 CLI(CI/CD) 无头 CLI 专为自动化、脚本编写和 CI/CD 工作流设计。 ### 执行扫描 运行静默扫描并输出简洁的文本表格: ``` debtdrone scan ./my-project ``` 以 JSON 格式输出结果供流水线解析: ``` debtdrone scan ./my-project --format=json ``` ### 质量门禁(失败构建) 通过设置严重性阈值来阻止错误代码合并。如果扫描器发现任何达到或超过此级别的问题,它将返回非零退出码(`os.Exit(1)`)。 ``` # 如果发现 Critical 或 High 债务,则管道失败 debtdrone scan ./my-project --fail-on=high ``` ### 配置管理 在仓库中初始化默认的 `.debtdrone.yaml`: ``` debtdrone init ``` 通过 CLI 查看或编辑设置: ``` debtdrone config list debtdrone config set thresholds.max_complexity 15 ``` ## 🛠 GitHub Actions 集成 DebtDrone 专为集成到你的 CI/CD 流水线而设计。以下是在 GitHub Actions 中实现 DebtDrone 质量门禁的复制粘贴示例: ``` name: Code Quality Gate on: [push, pull_request] jobs: debtdrone-scan: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v4 - name: Install DebtDrone run: | curl -sL https://github.com/endrilickollari/debtdrone-cli/releases/latest/download/debtdrone_Linux_x86_64.tar.gz | tar xz sudo mv debtdrone /usr/local/bin/ - name: Run DebtDrone Quality Gate # Fails the PR if high or critical technical debt is introduced run: debtdrone scan ./ --format=text --fail-on=high ``` ## 🏗 架构 DebtDrone 采用严格的 **端口与适配器(六边形)架构**,确保核心分析引擎与展示层保持解耦。 * **`internal/analysis/`**:核心业务逻辑。纯粹的 Go、无 UI 感知、高度并发的扫描引擎。 * **`cmd/debtdrone/`**:Cobra 路由层。处理无头执行、标志解析和操作系统退出码。 * **`internal/tui/`**:展示层。实现 Bubble Tea 嵌套路由模式。每个主要屏幕(AppModel、ConfigModel、ScanModel)均完全封装,并通过事件驱动的 `tea.Msg` 通信。 ### 测试 我们维护两套独立的测试套件: * **无头测试**:`go test ./cmd/...` 测试 Cobra 缓冲区、结构化 JSON 输出和操作系统退出码。 * **TUI 测试**:`go test ./internal/tui/...` 使用纯函数式状态注入测试 Bubble Tea 状态机。(注意:我们的测试辅助工具强制应用 TrueColor 配置文件,以确保在无头 CI 环境中 Lipgloss 字符串确定性渲染。) ## 📄 许可证 DebtDrone CLI 在 **MIT 许可证** 下分发。自由使用、修改和分发。 请参阅 [LICENSE](LICENSE) 获取完整细节。 ## ☕ 支持该项目 如果 DebtDrone 帮助你修复了关键问题或节省了时间,请考虑请我喝杯咖啡! Buy Me A Coffee
标签:API安全, AST解析, Bubble Tea, CLI, Cobra, EVTX分析, Go语言, Hexagonal Architecture, JSON输出, Lipgloss, TUI, WiFi技术, 二进制发布, 云安全监控, 代码分析工具, 代码复杂度, 安全扫描, 工程效率, 开源工具, 技术债务, 日志审计, 时序注入, 确定性执行, 程序破解, 自动更新, 质量门禁, 静态分析