RandomCodeSpace/codeiq
GitHub: RandomCodeSpace/codeiq
一个通过纯静态分析构建确定性代码知识图谱的工具,能自动扫描 35+ 种语言的代码库并将其中的服务、端点、实体、依赖等关系映射为 Neo4j 图谱,供 REST API、MCP server 和 Web UI 查询与可视化。
Stars: 0 | Forks: 0
codeiq
确定性代码知识图谱 -- 扫描代码库以映射服务、端点、实体、基础设施、身份验证模式和框架使用情况。无需 AI,纯静态分析。
## 快速开始 ``` # 从源码构建 (需要 Java 25+, Maven 3.9+) git clone https://github.com/RandomCodeSpace/codeiq.git cd codeiq mvn clean package -DskipTests # 分析代码库 java -jar target/code-iq-*-cli.jar analyze /path/to/repo # 启动服务器 (REST API + MCP + React UI) java -jar target/code-iq-*-cli.jar serve /path/to/repo # 打开 http://localhost:8080 ``` ## 工作原理 codeiq 使用 35+ 种语言的 99 个检测器扫描源文件,构建代码关系的知识图谱,并通过 REST API、MCP server 和 React UI 提供服务。 ``` graph TD subgraph "1. Index" A[File Discovery] -->|git ls-files| B[Parsing Layer] B -->|JavaParser / ANTLR / Regex| C[99 Detectors] C -->|Virtual Threads| D[Graph Builder] D --> E[(H2 Cache)] end subgraph "2. Enrich" E --> F[Neo4j Bulk Load] F --> G[Cross-file Linkers] G --> H[Layer Classifier] H --> I[Service Detector] I --> J[(Neo4j Graph)] end subgraph "3. Serve" J --> K[REST API - 37 endpoints] J --> L[MCP Server - 34 tools] J --> M[React UI - 4 pages] end ``` ### 三步命令流水线 适用于大型代码库或内存受限的环境: ``` # 1. Index: 批量 H2 流式传输,低内存 (~20K 文件仅需 1-2GB) java -jar code-iq-*-cli.jar index /path/to/repo --batch-size 500 # 2. Enrich: 将 H2 加载到 Neo4j,运行 linkers + classifier + topology java -jar code-iq-*-cli.jar enrich /path/to/repo # 3. Serve: REST API + MCP + React UI java -jar code-iq-*-cli.jar serve /path/to/repo ``` 对于小型代码库,`analyze` 一步即可完成所有操作: ``` java -jar code-iq-*-cli.jar analyze /path/to/repo ``` ## CLI 命令 | 命令 | 描述 | |---------|-------------| | `analyze [path]` | 扫描并构建知识图谱(内存中,多合一) | | `index [path]` | 内存高效的批量索引至 H2 | | `enrich [path]` | 将 H2 数据加载至 Neo4j,包含链接器、分类器和拓扑 | | `serve [path]` | 启动 React UI + REST API + MCP server | | `stats [path]` | 丰富的分类统计数据 | | `graph [path]` | 导出图谱 (JSON, YAML, Mermaid, DOT) | | `query [path]` | 查询关系(消费者、生产者、调用者) | | `find [what] [path]` | 预设查询 (endpoints, guards, entities, topics) | | `cypher [query]` | 对 Neo4j 执行原生 Cypher 查询 | | `topology [path]` | 服务拓扑(爆炸半径、循环依赖、瓶颈) | | `flow [path]` | 架构流程图 | | `bundle [path]` | 将图谱及源码打包为可分发的 ZIP 文件 | | `cache [action]` | 管理分析缓存 | | `plugins [action]` | 列出/检查检测器,建议配置 | | `version` | 显示版本信息 | ## 服务器 ``` java -jar target/code-iq-*-cli.jar serve /path/to/repo --port 8080 ``` ``` graph LR subgraph "http://localhost:8080" A["/ React UI"] --- B["/api REST API"] B --- C["/mcp MCP Server"] end ``` | 界面 | 描述 | |-----------|-------------| | **React UI** (`/`) | 仪表盘 (统计 + 图表)、代码库地图 (ECharts treemap)、浏览器 (节点浏览)、MCP 控制台 (工具调用)、API 文档 | | **REST API** (`/api`) | 37 个端点 -- stats, nodes, edges, topology, triage, search, flow | | **MCP Server** (`/mcp`) | 通过 Spring AI 流式 HTTP 提供 34 个工具,用于 AI 驱动的代码分诊 | ## 支持的框架 | 语言 | 框架与模式 | |----------|----------------------| | **Java** | Spring REST, Spring Security, JPA/Hibernate, Kafka, RabbitMQ, JMS, gRPC, JAX-RS, WebSocket, Quarkus, Micronaut | | **Python** | Flask, Django (views + models + auth), FastAPI (routes + auth), SQLAlchemy, Celery, Pydantic | | **TypeScript** | Express, NestJS, Fastify, Remix, GraphQL, TypeORM, Prisma, Sequelize, Mongoose, KafkaJS, Passport/JWT | | **前端** | React, Vue, Angular, Svelte 组件和路由 | | **Go** | Gin, Echo, Chi, gorilla/mux, net/http, GORM, sqlx | | **C#** | Entity Framework Core, Minimal APIs, ASP.NET Core | | **Rust** | Actix-web, Axum | | **Kotlin** | Ktor 路由 | | **基础设施** | Terraform, Kubernetes, Docker Compose, Dockerfile, Bicep, Helm, GitHub Actions, GitLab CI, CloudFormation | | **身份验证** | Spring Security, Django Auth, FastAPI Auth, NestJS Guards, Passport/JWT, K8s RBAC, LDAP | ## 服务拓扑 基于静态代码分析生成 AppDynamics 风格的服务拓扑: ``` # 查看服务 topology java -jar code-iq-*-cli.jar topology /path/to/monorepo # Blast radius 分析 java -jar code-iq-*-cli.jar topology /path/to/repo --blast-radius service-name # 多仓库支持 java -jar code-iq-*-cli.jar index /repo1 --graph /shared --service-name frontend java -jar code-iq-*-cli.jar index /repo2 --graph /shared --service-name backend java -jar code-iq-*-cli.jar serve /shared ``` ## 配置 codeiq 由代码仓库根目录下的一个 YAML 文件进行配置:**`codeiq.yml`**。 每个字段都是可选的;省略的字段将回退到代码内的默认值 (`ConfigDefaults.builtIn()`)。请参阅 [`docs/codeiq.yml.example`](docs/codeiq.yml.example) 获取带有内联文档的完整参考。 所有键均采用 **snake_case** 格式;接受 camelCase 拼写作为已弃用的别名(仅限一个版本),并在加载时记录 WARN 日志。 ### 解析顺序(后者覆盖前者) 1. 内置默认值 2. `~/.codeiq/config.yml` (用户全局) 3. `./codeiq.yml` (项目) 4. 环境变量:`CODEIQ_凭智慧构建。无需 AI。
标签:API端点发现, DevSecOps, IP 地址批量处理, Maven, MCP Server, Neo4j, REST API, Spring AI, TCP SYN 扫描, WebSocket, Web UI, 上游代理, 代码可视化, 代码安全审计, 代码知识图谱, 依赖分析, 图谱数据库, 域名枚举, 基础设施即代码分析, 多语言支持, 威胁情报, 安全测试框架, 实体识别, 开发者工具, 数据管道, 无AI, 服务拓扑映射, 架构分析, 漏洞验证, 确定性分析, 认证模式检测, 软件工程, 错误基检测, 静态代码分析, 静态检测器