# python_ast_parser1 **Repository Path**: enzoism/python_ast_parser1 ## Basic Information - **Project Name**: python_ast_parser1 - **Description**: 使用AST和Ripgrep开发的源码分析工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-08 - **Last Updated**: 2026-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🔍 Project Analyzer - 项目源码分析工具 一个结合AST(抽象语法树)和ripgrep的强大项目源码分析工具,帮助您快速理解和分析代码库结构。 ## ✨ 功能特性 - 📊 **项目结构可视化**:将本地项目转换为结构化视图,以树状形式展示 - 🔎 **智能代码搜索**:利用ripgrep实现快速的全文搜索和模式匹配 - 🏗️ **AST解析**:深度解析Python代码,提取类、函数、方法等符号信息 - 💾 **缓存机制**:分析结果保存在 `.ast` 文件中,支持快速加载 - 🌐 **Web界面**:友好的前端界面,支持交互式浏览和搜索 - 🔍 **符号定位**:快速定位类和函数的定义位置及引用关系 ## 🚀 快速开始 ### 环境要求 - Python 3.11+ - ripgrep(可选,但强烈推荐用于更好的搜索性能) ### 安装步骤 1. **克隆或下载项目** ```bash cd /path/to/project-analyzer ``` 2. **安装依赖** ```bash pip install -r requirements.txt ``` 3. **安装ripgrep(推荐)** macOS: ```bash brew install ripgrep ``` Linux: ```bash apt-get install ripgrep # 或 yum install ripgrep ``` ### 启动应用 ```bash python backend/app.py ``` 启动后,在浏览器中访问: - 前端界面:http://localhost:5000 - API接口:http://localhost:5000/api/ ## 📖 使用指南 ### 1. 项目抽取 1. 在前端页面的输入框中输入本地项目路径(例如:`/Users/username/my-project`) 2. 点击"📊 项目抽取"按钮 3. 等待分析完成,项目结构将显示在左侧面板 4. 分析结果会自动保存到项目目录的 `.ast` 文件中 ### 2. 浏览项目结构 - **目录**:点击可展开/收起 - **文件**:显示文件名,点击可查看信息 - **类**:以🔷标识,点击可查找定义 - **函数**:以🔶标识,点击可查找定义 ### 3. 查看统计信息 在"概览"标签页中可以看到: - 总文件数 - 已解析文件数 - 类数量 - 函数数量 - 方法数量 ### 4. 符号列表 切换到"符号列表"标签页,可以查看所有类和函数的详细信息: - 名称 - 所在文件 - 行号 - 文档字符串(如果有) ### 5. 代码搜索 1. 在左侧搜索框中输入关键字 2. 按回车或点击"搜索"按钮 3. 搜索结果会显示在"搜索结果"标签页中 4. 每个结果包含: - 文件路径 - 行号 - 代码内容 ## 🏛️ 项目结构 ``` project-analyzer/ ├── backend/ # 后端模块 │ ├── app.py # Flask API服务 │ ├── analyzer.py # AST分析器和项目索引 │ └── rg_client.py # ripgrep客户端 ├── frontend/ # 前端文件 │ └── index.html # 单页面应用 ├── requirements.txt # Python依赖 └── README.md # 说明文档 ``` ## 🔧 技术栈 ### 后端 - **Flask**:轻量级Web框架 - **Flask-CORS**:跨域资源共享支持 - **AST模块**:Python内置的抽象语法树解析 - **ripgrep**:超快的文本搜索工具 ### 前端 - **原生HTML/CSS/JavaScript**:无需额外框架 - **响应式设计**:适配不同屏幕尺寸 - **现代UI**:渐变色和流畅动画 ## 📝 API接口 ### POST /api/analyze 分析项目 ```json { "project_path": "/path/to/project", "force_reanalyze": false } ``` ### POST /api/search 搜索代码 ```json { "keyword": "search_term", "project_path": "/path/to/project" } ``` ### POST /api/find-definition 查找符号定义 ```json { "symbol_name": "ClassName", "project_path": "/path/to/project" } ``` ### POST /api/find-references 查找符号引用 ```json { "symbol_name": "function_name", "project_path": "/path/to/project" } ``` ### POST /api/file-content 获取文件内容 ```json { "file_path": "/path/to/file.py", "start_line": 10, "end_line": 20 } ``` ## 💡 使用技巧 1. **首次分析较慢**:第一次分析大型项目可能需要一些时间,但后续会使用缓存快速加载 2. **强制重新分析**:如果需要重新分析,可以删除项目目录下的 `.ast` 文件 3. **ripgrep优势**:安装ripgrep后,搜索速度会显著提升 4. **快捷键**:在搜索框中按Enter键快速搜索 ## 🐛 故障排除 ### 问题:找不到ripgrep **解决方案**: - 安装ripgrep(见上方安装步骤) - 或者继续使用内置的降级搜索方案(速度较慢) ### 问题:端口5000被占用 **解决方案**: 修改 `backend/app.py` 中的端口号: ```python app.run(host='0.0.0.0', port=5001, debug=True) ``` ### 问题:无法访问前端页面 **解决方案**: - 确保服务器正在运行 - 检查浏览器控制台是否有错误 - 确认frontend目录存在且包含index.html ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交Issue和Pull Request! --- **享受代码分析的乐趣!** 🎉