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 归档分析, 代码安全分析, 代码漏洞检测, 代码质量分析, 多轮分析, 大语言模型安全审计, 数据可视化, 文件分块处理, 本地化处理, 自动化安全扫描, 自定义脚本, 逻辑错误检测, 错误基检测, 静态代码分析