EricCogen/GauntletCI
GitHub: EricCogen/GauntletCI
一个预提交变更风险检测工具,分析PR差异以标记未经验证的行为变更。
Stars: 1 | Forks: 0
# GauntletCI — 预提交变更风险检测(针对拉取请求差异)

[](https://github.com/EricCogen/GauntletCI/commits/main)
[](https://github.com/EricCogen/GauntletCI/stargazers)
[](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, 二进制发布, 云安全监控, 代码变更风险, 代码审查辅助, 代码差异, 变更验证, 多人体追踪, 威胁情报, 安全编码, 差异分析, 开发工具, 开发者工具, 开源工具, 开源框架, 持续集成, 本地工具, 行为变更, 静态分析, 预提交检测, 风险预警, 高信号检测