EricCogen/GauntletCI

GitHub: EricCogen/GauntletCI

一个预提交变更风险检测工具,分析PR差异以标记未经验证的行为变更。

Stars: 1 | Forks: 0

# GauntletCI — 预提交变更风险检测(针对拉取请求差异)
GauntletCI Logo
![GauntletCI](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/EricCogen/db3979f1a5d69ce37d425b73bdcf4ada/raw/gauntletci-badge.json) [![GitHub last commit](https://img.shields.io/github/last-commit/EricCogen/GauntletCI)](https://github.com/EricCogen/GauntletCI/commits/main) [![GitHub stars](https://img.shields.io/github/stars/EricCogen/GauntletCI?style=social)](https://github.com/EricCogen/GauntletCI/stargazers) [![License](https://img.shields.io/badge/License-Elastic_2.0-blue.svg)](LICENSE) ## 🚀 什么是 GauntletCI? **GauntletCI** 是一个预提交、差异优先的变更风险检测工具。 它分析代码中的变更内容,并在风险到达代码审查前标记**未经验证的行为变更**。 * ⚡ 亚秒级分析 — 无需编译、无 AST、无网络 * 🔒 本地运行 — 代码不会离开你的机器 * 🎯 高信号输出 — 旨在每次运行呈现 0–3 个发现 它回答一个问题: GauntletCI 检测 **由差异引入的未经验证的行为**。 ## ⏱ 5 分钟内上手 * 安装工具 * 在当前变更上运行它 * 查看 0–3 个高信号发现(或无) 无需额外设置。 ## 📖 存在的原因 即使是有经验的开发者也可能在差异中遗漏问题。 并非因为技能不足,而是因为差异具有欺骗性。 微小的变更可能悄无声息地改变行为: * 空值检查改变执行流 * 保护子句引入新异常 * 方法签名变更但未更新测试 * 依赖调用被修改但未经验证 * 条件分支改变了逻辑 这些不是语法错误。 它们是**行为变更** — 而这类问题经常穿过代码审查。 ## 🏆 可靠性验证 GauntletCI 规则已在真实世界的拉取请求中验证: | 项目 | GauntletCI 捕获的问题 | |------|----------------------| | **dotnet/efcore** | O(n²) 性能风险(循环中的 LINQ) | | **StackExchange.Redis** | 属性 getter 中的上下文变更 | | **Dapper** | 空值断言运算符误用 | | **SharpCompress** | 数值溢出风险 | | **AngleSharp** | 枚举成员移除破坏序列化 | ## ⚡ 快速开始 ``` dotnet tool install -g GauntletCI # 运行前提交 gauntletci analyze --staged ``` ## 🧪 首次运行所见 ``` GauntletCI vX.X.X Analyzing staged changes... Findings -------- [BLOCK] Removed logic without tests [WARN] Missing input validation Result ------ Exit code: 1 ``` 典型输出包含 **0–3 个高信号发现**。 ## 🔇 高信号设计 GauntletCI 通过设计避免噪声: * 仅差异分析(仅变更内容) * 无风格或格式检查 * 专注行为风险 * 遗留代码基线抑制 ## 📊 基线差异模式 将 GauntletCI 引入任意代码库无噪声: ``` gauntletci baseline create gauntletci analyze --staged ``` 仅显示**当前变更引入的新风险**。 ## 🚀 检测能力 ### 行为与契约安全 * 无测试的行为变更 * API 与序列化变更 ### 数据与状态完整性 * 数值截断/溢出风险 * 状态变更问题 ### 异步与资源安全 * 阻塞异步调用 * 可释放资源泄漏 ### 安全与隐私 * SQL 注入风险 * 硬编码密钥 * PII 暴露(自动脱敏) ### 可观测性与故障处理 * 缺失日志 * 静默失败 ## 📏 检测覆盖范围 GauntletCI 包含 **28 个内置检测规则**,覆盖: * 行为与契约 * 安全 * 数据完整性 * 异步与并发 * 可观测性 * 架构 * 测试质量 规则 ID 范围为 GCI0001–GCI0050。 ## ⚡ 常见用法 ``` gauntletci analyze --staged gauntletci analyze --commit ``` ## ❌ 它不是什么 * 不是代码风格检查器 * 不是静态分析的替代品 * 不是测试运行器 * 不是格式化工具 GauntletCI 仅专注**变更风险**,而非通用代码质量。 ## ⚠️ 未检测到发现的情况 * 未识别到变更风险信号 * 这不保证代码正确性 * 表示未发现高置信度风险 ## 🤖 本地 LLM 集成(可选) LLM 集成仅用于增强解释。 * 所有检测逻辑是确定性的 * 通过 Ollama 本地运行 * 无数据离开你的机器 ## 🔒 隐私 * 所有分析在本地运行 * 代码不会离开你的机器 * 自动脱敏防止敏感数据暴露 * 遥测可选且匿名 ## 📄 许可证 Elastic License 2.0
标签:Elastic License, Git 钩子, SOC Prime, 二进制发布, 云安全监控, 代码变更风险, 代码审查辅助, 代码差异, 变更验证, 多人体追踪, 威胁情报, 安全编码, 差异分析, 开发工具, 开发者工具, 开源工具, 开源框架, 持续集成, 本地工具, 行为变更, 静态分析, 预提交检测, 风险预警, 高信号检测