gitstq/AICodeGuard
GitHub: gitstq/AICodeGuard
一款零依赖的 AI 生成代码质量检测 CLI 工具,通过 52 条内置规则在代码进入生产环境前识别安全隐患与质量问题。
Stars: 0 | Forks: 0
🛡️ AICodeGuard
AI 生成代码质量检测引擎
AI生成代码通用质量检测引擎
English •
简体中文 •
繁體中文
## 🎉 项目介绍
**AICodeGuard** 是一款轻量级、零依赖的 CLI 工具,专门用于检测 AI 生成代码中的常见质量问题。受到验证 LLM(ChatGPT、Claude、Copilot 等)生成代码日益增长的需求启发,它提供了横跨 **5 种编程语言** 的 **52 条内置检测规则**。
### 🔥 为什么需要 AICodeGuard?
AI 编程助手虽然异常强大,但它们生成的代码往往带有一些微妙的问题:
- 🔮 **幻觉导入** — 引用不存在的包
- 🔑 **硬编码密钥** — 将 API 密钥、Token 嵌入源码中
- 🐛 **调试残留** — 未清理的 `print()`、`console.log()` 语句
- ⚡ **安全风险** — `eval()`、`innerHTML`、`subprocess shell=True`
- 📏 **代码异味** — 过长的函数、重复的代码块、可变默认参数
AICodeGuard 在这些问题**进入生产环境之前**将其捕获,为 AI 辅助开发提供安全保障。
### ✨ 核心特性
- 🚀 **零依赖** — 纯 Python 标准库实现,无需进行 pip install
- 🌐 **5 种语言** — Python、JavaScript、TypeScript、Go、Rust
- 📏 **52 条内置规则** — 涵盖安全、质量、风格和 AI 特有的模式
- 📊 **4 种报告格式** — 终端(彩色)、JSON、SARIF(GitHub 代码扫描)、HTML
- ⚡ **极速检测** — 基于正则表达式的检测,结合上下文感知分析
- 🔧 **适配 CI/CD** — SARIF 输出可直接集成 GitHub Actions
- 🎯 **精细化控制** — 按语言、严重程度、文件模式进行过滤
## 🎉 项目介绍
**AICodeGuard** 是一款轻量级、零依赖的命令行工具,专门用于检测AI生成代码中的常见质量问题。针对大语言模型(ChatGPT、Claude、Copilot等)生成代码的固有缺陷,提供覆盖 **5种编程语言** 的 **52条内置检测规则**。
### 🔥 为什么需要 AICodeGuard?
AI编程助手虽然强大,但生成的代码经常存在以下隐患:
- 🔮 **幻觉导入** — 引用不存在的第三方包
- 🔑 **硬编码密钥** — API密钥、Token直接写在源码中
- 🐛 **调试残留** — `print()`、`console.log()` 未清理
- ⚡ **安全漏洞** — `eval()`、`innerHTML`、`subprocess shell=True`
- 📏 **代码异味** — 过长函数、重复代码块、可变默认参数
AICodeGuard 在代码**进入生产环境之前**捕获这些问题,为AI辅助开发提供安全保障。
### ✨ 核心特性
- 🚀 **零依赖** — 纯Python标准库实现,无需安装任何第三方包
- 🌐 **5种语言** — Python、JavaScript、TypeScript、Go、Rust
- 📏 **52条内置规则** — 覆盖安全、质量、风格和AI特有缺陷模式
- 📊 **4种报告格式** — 彩色终端、JSON、SARIF(GitHub代码扫描)、HTML
- ⚡ **极速检测** — 基于正则匹配 + 上下文感知分析
- 🔧 **CI/CD友好** — SARIF输出可直接集成GitHub Actions
- 🎯 **精细控制** — 按语言、严重程度、文件模式过滤
## 🎉 專案介紹
**AICodeGuard** 是一款輕量級、零依賴的命令列工具,專門用於檢測AI生成程式碼中的常見品質問題。針對大語言模型(ChatGPT、Claude、Copilot等)生成程式碼的固有缺陷,提供覆蓋 **5種程式語言** 的 **52條內建檢測規則**。
### 🔥 為什麼需要 AICodeGuard?
AI程式設計助手雖然強大,但生成的程式碼經常存在以下隱患:
- 🔮 **幻覺匯入** — 引用不存在的第三方套件
- 🔑 **硬編碼金鑰** — API金鑰、Token直接寫在原始碼中
- 🐛 **除錯殘留** — `print()`、`console.log()` 未清理
- ⚡ **安全漏洞** — `eval()`、`innerHTML`、`subprocess shell=True`
- 📏 **程式碼異味** — 過長函式、重複程式碼區塊、可變預設參數
AICodeGuard 在程式碼**進入生產環境之前**捕獲這些問題,為AI輔助開發提供安全保障。
### ✨ 核心特性
- 🚀 **零依賴** — 純Python標準函式庫實作,無需安裝任何第三方套件
- 🌐 **5種語言** — Python、JavaScript、TypeScript、Go、Rust
- 📏 **52條內建規則** — 覆蓋安全、品質、風格和AI特有缺陷模式
- 📊 **4種報告格式** — 彩色終端、JSON、SARIF(GitHub程式碼掃描)、HTML
- ⚡ **極速檢測** — 基於正規表示式 + 上下文感知分析
- 🔧 **CI/CD友善** — SARIF輸出可直接整合GitHub Actions
- 🎯 **精細控制** — 按語言、嚴重程度、檔案模式過濾
## 📏 检测规则
### 🐍 Python (14 条规则)
| ID | 严重程度 | 规则 | 描述 |
|----|----------|------|-------------|
| PY001 | 🔴 错误 | 幻觉导入 | 检测常见的幻觉第三方包的导入 |
| PY002 | 🔴 错误 | 硬编码 API 密钥 | 检测硬编码的 API 密钥、Token 和密码 |
| PY003 | 🔵 信息 | TODO/FIXME 注释 | 检测 TODO、FIXME、HACK、XXX 注释 |
| PY004 | 🟡 警告 | 裸 Except | 检测裸 `except:` 子句 |
| PY005 | 🟡 警告 | Print 调试语句 | 检测遗留的 `print()` 调试语句 |
| PY006 | 🔵 信息 | 未使用的导入 | 检测未使用的导入 |
| PY007 | 🔴 错误 | 不安全的 eval/exec | 检测危险的 `eval()` 和 `exec()` 调用 |
| PY008 | 🟡 警告 | 硬编码文件路径 | 检测硬编码的文件路径 |
| PY009 | 🟡 警告 | 过长函数 | 检测超过 50 行的函数 |
| PY010 | 🟡 警告 | 重复代码块 | 检测重复的代码块(4 行以上) |
| PY011 | 🔴 错误 | 不安全的 pickle/yaml.load | 检测不安全的反序列化调用 |
| PY012 | 🟡 警告 | 死代码 | 检测不可达代码 |
| PY013 | 🟡 警告 | 可变默认参数 | 检测可变默认参数 |
| PY014 | 🔴 错误 | Subprocess Shell 注入 | 检测带有 `shell=True` 的 `subprocess` |
### 🟨 JavaScript (12 条规则)
| ID | 严重程度 | 规则 | 描述 |
|----|----------|------|-------------|
| JS001 | 🟡 警告 | Console.log 调试 | 检测遗留的 `console.log()` 语句 |
| JS002 | 🟡 警告 | Var 声明 | 检测应使用 `let`/`const` 的 `var` |
| JS003 | 🟡 警告 | 松散等号 | 检测应使用 `===`/`!==` 的 `==`/`!=` |
| JS004 | 🔴 错误 | 硬编码密钥 | 检测硬编码的 API 密钥和 Token |
| JS005 | 🔴 错误 | Eval 使用 | 检测危险的 `eval()` 调用 |
| JS006 | 🔴 错误 | InnerHTML 赋值 | 检测易受 XSS 攻击的 `innerHTML` 用法 |
| JS007 | 🟡 警告 | 未处理的 Promise | 检测缺乏错误处理的 Promise 链 |
| JS008 | 🔵 信息 | TODO/FIXME 注释 | 检测 TODO/FIXME/HACK 注释 |
| JS009 | 🟡 警告 | 过长函数 | 检测超过 50 行的函数 |
| JS010 | 🟡 警告 | 重复代码块 | 检测重复的代码块 |
| JS011 | 🟡 警告 | 硬编码 URL | 检测硬编码的 localhost/内部 URL |
| JS012 | 🔴 错误 | Debugger 语句 | 检测遗留的 `debugger` 语句 |
### 💎 TypeScript (10 条规则)
| ID | 严重程度 | 规则 | 描述 |
|----|----------|------|-------------|
| TS001 | 🟡 警告 | Any 类型滥用 | 检测过多的 `any` 类型使用 |
| TS002 | 🟡 警告 | 缺少类型注解 | 检测未添加类型的函数参数 |
| TS003 | 🟡 警告 | 非空断言滥用 | 检测过多的 `!` 操作符使用 |
| TS004 | 🔵 信息 | Enum 与 Const Enum | 为了性能建议使用 `const enum` |
| TS005 | 🔵 信息 | 未使用的 Interface/Type | 检测未使用的 interface 和 type |
| TS006 | 🟡 警告 | 复杂条件 | 检测过于复杂的条件 |
| TS007 | 🟡 警告 | 不安全的类型断言 | 检测不安全的 `as` 类型断言 |
| TS008 | 🔵 信息 | 缺少返回类型 | 检测缺少返回类型注解 |
| TS009 | 🟡 警告 | Console.log 调试 | 检测遗留的 console.log |
| TS010 | 🔴 错误 | 硬编码密钥 | 检测硬编码的密钥 |
### 🐹 Go (8 条规则)
| ID | 严重程度 | 规则 | 描述 |
|----|----------|------|-------------|
| GO001 | 🔴 错误 | 未处理的错误返回 | 检测未处理的错误返回值 |
| GO002 | 🔴 错误 | 硬编码密钥 | 检测硬编码的 API 密钥和 Token |
| GO003 | 🟡 警告 | Fmt Print 调试 | 检测 `fmt.Println` 调试语句 |
| GO004 | 🔵 信息 | 空 Defer | 检测空的 defer 语句 |
| GO005 | 🔵 信息 | TODO/FIXME 注释 | 检测 TODO/FIXME 注释 |
| GO006 | 🟡 警告 | 过长函数 | 检测超过 50 行的函数 |
| GO007 | 🟡 警告 | 全局变量滥用 | 检测过多的全局变量 |
| GO008 | 🔴 错误 | 不安全的随机数 | 检测安全上下文中使用的 `math/rand` |
### 🦀 Rust (8 条规则)
| ID | 严重程度 | 规则 | 描述 |
|----|----------|------|-------------|
| RS001 | 🔴 错误 | Unwrap 滥用 | 检测应使用错误处理的 `.unwrap()` |
| RS002 | 🟡 警告 | 无上下文的 Expect | 检测带有空消息的 `.expect()` |
| RS003 | 🔴 错误 | Unsafe 块 | 检测 `unsafe` 块 |
| RS004 | 🟡 警告 | Clone 过度使用 | 检测过多的 `.clone()` 调用 |
| RS005 | 🟡 警告 | Println 调试 | 检测 `println!`/`dbg!` 调试宏 |
| RS006 | 🔵 信息 | TODO/FIXME 注释 | 检测 TODO/FIXME 注释 |
|007 | 🟡 警告 | 过长函数 | 检测超过 50 行的函数 |
| RS008 | 🔵 信息 | 未使用的 Mut | 检测不必要的 `mut` 绑定 |
## 🚀 快速开始
### 📋 前置条件
- **Python 3.8+**(无需其他依赖!)
### 📦 安装
```
# 克隆仓库
git clone https://github.com/gitstq/AICodeGuard.git
cd AICodeGuard
# 安装(可编辑模式)
pip install -e .
# 或者直接运行而无需安装
python -m aicodeguard --help
```
### 🎮 用法
```
# 扫描当前目录(所有语言)
aicodeguard scan .
# 使用语言过滤扫描特定路径
aicodeguard scan ./src --language python
aicodeguard scan ./src --language javascript
aicodeguard scan ./src --language typescript
aicodeguard scan ./src --language go
aicodeguard scan ./src --language rust
# 生成不同格式的报告
aicodeguard scan ./src --format json --output report.json
aicodeguard scan ./src --format html --output report.html
aicodeguard scan ./src --format sarif --output report.sarif.json
# 按严重性级别过滤
aicodeguard scan ./src --severity error
aicodeguard scan ./src --severity warning
aicodeguard scan ./src --severity info
# 排除目录
aicodeguard scan . --exclude "node_modules,dist,build,.venv"
# 包含特定文件模式
aicodeguard scan . --include "*.py,*.js,*.ts"
# 列出所有可用规则
aicodeguard rules
aicodeguard rules --language python
# 显示版本信息
aicodeguard version
```
## 📖 详细指南
### 🔧 CLI 选项
| 选项 | 简写 | 描述 |
|--------|-------|-------------|
| `--language` | `-l` | 按语言过滤 |
| `--format` | `-f` | 输出格式 |
| `--output` | `-o` | 输出文件路径 (用于 json/sarif/html) |
| `--severity` | `-s` | 按严重程度过滤 |
| `--exclude` | `-e` | 逗号分隔的要排除的目录 |
| `--include` | `-i` | 逗号分隔的要包含的文件模式 |
| `--no-color` | | 禁用彩色终端输出 |
| `--quiet` | `-q` | 安静模式,仅显示摘要 |
### 🔄 CI/CD 集成
#### GitHub Actions 示例
```
name: AI Code Quality Check
on: [push, pull_request]
jobs:
aicodeguard:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install -e .
- run: aicodeguard scan . --format sarif --output results.sarif.json
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif.json
```
#### Pre-commit Hook
```
# .pre-commit-config.yaml
repos:
- repo: https://github.com/gitstq/AICodeGuard
rev: v1.0.0
hooks:
- id: aicodeguard
args: ['scan', '--severity', 'error']
```
### 📊 报告格式
- **终端** — 带有严重程度指示器的彩色终端输出
- **JSON** — 用于编程式消费的结构化数据
- **SARIF** — 兼容 GitHub 代码扫描的格式
- **HTML** — 带有统计信息和图表的独立报告
## 💡 设计理念与路线图
### 🎯 设计原则
1. **零依赖** — 可在任何运行 Python 的地方工作,无安装阻碍
2. **感知 AI** — 规则专门针对 AI 生成代码中的常见模式
3. **速度优先** — 基于正则表达式的检测,提供即时反馈
4. **可扩展** — 简洁的规则基类使添加新规则变得轻而易举
### 🗺️ 路线图
- [ ] **v1.1** — 基于 YAML 的自定义规则配置
- [ ] **v1.2** — `--fix` 自动修复模式,用于解决简单问题
- [ ] **v1.3** — Diff 模式(仅扫描 git 中更改的文件)
- [ ] **v2.0** — 基于自然语言的 LLM 驱动规则生成
- [ ] **v2.1** — 带有内联诊断的 VS Code 扩展
- [ ] **v2.2** — 语言服务器协议 (LSP) 支持
### 📄 许可证
本项目基于 **MIT License** 授权 — 详情请参见 [LICENSE](LICENSE) 文件。
Made with ❤️ by gitstq
标签:AICodeGuard, AI代码检测, AI生成代码, API安全, ChatGPT, CISA项目, Claude, Copilot, CVE检测, DevSecOps, DLL 劫持, HTML报告, IPv6支持, JSON报告, JSON输出, LLM, Promptflow, Python, SARIF, SAST, SOC Prime, Unmanaged PE, URL发现, 上游代理, 代码审查, 代码异味, 大语言模型, 安全检测, 安全漏洞, 对抗攻击, 幻觉导入, 开发工具, 敏感信息检测, 数据管道, 文档结构分析, 无后门, 盲注攻击, 硬编码密钥, 软件工程, 逆向工具, 错误基检测, 零依赖, 静态代码分析, 静态应用安全测试