TriiiTechnologiesLLC/llm-code-analyzer
GitHub: TriiiTechnologiesLLC/llm-code-analyzer
一个使用 Ollama 对 ZIP 归档进行自动化代码安全与质量分析的 Node.js CLI 工具。
Stars: 0 | Forks: 0
# 🛡️ 代码分析器
**使用 Ollama 对 ZIP 归档文件进行自动化代码安全与质量分析。**
`zip-code-analyzer.js` 是一个 Node.js CLI 工具,用于从 ZIP 归档中提取代码文件,使用本地大型语言模型(Ollama)分析其安全漏洞和逻辑错误,并生成结构化报告。
### ✨ 功能
* **🗜️ ZIP 归档支持:** 直接分析 `.zip` 文件中的代码,无需手动解压。
* **🧩 智能分块:** 根据行完整性自动将大文件拆分为可管理的块,以尊重模型上下文限制。
* **🔄 多遍分析:**
1. **分块分析:** 对各个代码段进行特定问题分析。
2. **文件综合:** 将分块结果合并为每个文件的完整报告。
* **📊 灵活报告:** 将分析结果导出为 **Markdown(`.md`)** 和 **JSON(`.json`)**。
* **⚙️ 可配置:** 通过 `.env` 完全自定义(模型、超时、分块大小、扩展名等)。
* **🔒 本地处理:** 全程通过 Ollama 在本地运行,确保源代码隐私。
## 📋 先决条件
1. **Node.js:** 推荐版本 14 或更高。
2. **Ollama:** 必须已安装并本地运行。
* [下载 Ollama](https://ollama.ai/download)
* 确保已安装模型(默认模型为 `gpt-oss:20b`)。
* **在启动分析器前运行 Ollama:**
ollama serve
## 🚀 安装
1. **克隆或下载仓库:**
git clone
cd
2. **安装依赖:**
npm install
*必需包:* `dotenv`、`adm-zip`、`axios`
3. **创建环境文件:**
复制默认环境配置:
cp .env.example .env
*(或根据下方“配置”部分手动创建 `.env` 文件。)*
## ⚙️ 配置
编辑项目根目录下的 `.env` 文件以自定义行为。
| 变量 | 描述 | 默认值 |
| :--- | :--- | :--- |
| `OLLAMA_HOST` | Ollama API 服务器地址 | `http://localhost:11434` |
| `OLLAMA_MODEL` | 使用的 LLM 模型 | `gpt-oss:20b` |
| `MAX_FILE_SIZE_KB` | 触发分块的最大文件大小(KB) | `100` |
| `CHUNK_SIZE_KB` | 每块大小限制(KB) | `40` |
| `ALLOWED_EXTENSIONS` | 允许的文件扩展名(逗号分隔) | `.js,.jsx,.ts,.php...` |
| `ENABLE_REPORTING` | 启用/禁用报告生成 | `false` |
| `OUTPUT_FORMATS` | 导出格式(逗号分隔,`md`、`json`) | `md` |
| `REPORT_PREFIX` | 生成报告的文件名前缀 | `analysis_report` |
| `TIMEOUT` | API 请求超时(秒) | `3600` |
**示例 `.env`:**
```
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=gpt-oss:20b
MAX_FILE_SIZE_KB=100
CHUNK_SIZE_KB=40
ALLOWED_EXTENSIONS=.js,.py,.ts
ENABLE_REPORTING=true
OUTPUT_FORMATS=md,json
```
## 🏃 使用
在命令行中运行分析器,传入目标 ZIP 文件的路径。
```
node zip-code-analyzer.js /path/to/target-archive.zip
```
### 示例输出日志
```
🚀 Zip Code Analyzer Initialized
📂 Target: my-project.zip
🤖 Model: gpt-oss:20b
📄 Reporting: Enabled
📏 Chunk Size: 40KB
━━━━━...
🔍 Processing: src/app.js
📄 Analyzing single file (25.4KB)
✅ Analysis Preview:
──────────────────────────────────────────────
- Security Risk: Hardcoded API key found in line 45.
- Logic Error: Potential infinite loop in async fetch.
──────────────────────────────────────────────
🔍 Processing: src/utils/helper.ts
📦 Large file detected (150.2KB). Chunking...
> Chunk 1/4...
> Chunk 2/4...
> Synthesizing summary...
💾 Markdown report saved to: analysis_report_2023-10-27T10-00-00.md
💾 JSON report saved to: analysis_report_2023-10-27T10-00-00.json
🏁 Process Complete.
```
## 🛠️ 工作原理
### 1. 文件过滤
脚本扫描 ZIP 归档并根据 `ALLOWED_EXTENSIONS` 过滤文件,自动跳过二进制文件。
### 2. 分块逻辑
如果文件大小超过 `MAX_FILE_SIZE_KB`:
1. 按行拆分内容(`splitContentByLines`)。
2. 每个分块独立由 LLM 分析,确保不超出上下文限制。
3. **综合提示** 将所有分块分析合并为单个文件摘要。
### 3. 报告
若 `ENABLE_REPORTING` 为真:
* **Markdown:** 包含统计信息和每个文件的详细分析的可读摘要。
* **JSON:** 供 CI/CD 集成的机器可读数据结构。
## ⚠️ 安全提示
尽管该工具在本地运行,但仍需注意以下事项:
* **代码隐私:** 你的代码会被发送到本地 Ollama 实例,请确保 Ollama 主机安全。
* **敏感数据:** 避免分析包含硬编码密钥、API 密钥或个人身份信息(PII)的 ZIP 文件,因为 LLM 可能无意中记忆模式或记录日志。
* **依赖项:** 确保所有 npm 依赖(`adm-zip`、`axios`、`dotenv`)保持更新。
## 📜 许可证
本项目采用 MIT 许可证。
## 🤝 贡献
欢迎 Star!
欢迎分叉本仓库并提交 Pull Request。需要改进的领域包括:
* 支持更多压缩格式(`.tar.gz`、`.rar`)。
* 优化 LLM 提示以适配特定语言规范。
标签:AI风险缓解, .env 配置管理, JavaScript 安全分析, JSON 报告导出, Markdown 报告, MITM代理, Node.js CLI 工具, Ollama 本地模型, SEO: 代码分析工具, SEO: 安全扫描工具, SEO: 本地 AI 分析, zip-code-analyzer.js, ZIP 归档分析, 代码安全分析, 代码漏洞检测, 代码质量分析, 多轮分析, 大语言模型安全审计, 数据可视化, 文件分块处理, 本地化处理, 自动化安全扫描, 自定义脚本, 逻辑错误检测, 错误基检测, 静态代码分析