# Showmecode **Repository Path**: yyy113/showmecode ## Basic Information - **Project Name**: Showmecode - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-13 - **Last Updated**: 2025-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python代码分析器 这是一个用Python编写的代码分析工具,用于分析Python代码库并生成可视化的结构图和摘要文档。 ## 功能特点 - **文件结构图**:生成整个代码库的文件和目录结构的可视化图表 - **代码结构图**:分析并展示代码中的函数和类之间的调用关系 - **模块依赖图**:分析模块之间的导入关系并生成依赖图 - **函数/类摘要**:自动提取所有函数和类的信息,包括参数、文档字符串等 - **导入分析**:分析并列出每个文件中的导入语句 - **类型注解分析**:提取并分析函数参数和返回值的类型注解 - **类属性分析**:提取类的属性、装饰器和其他元数据 ## 安装要求 使用本工具需要以下依赖: ```bash pip install graphviz ``` 注意:除了Python包之外,还需要安装Graphviz软件。 - Windows: 下载并安装 [Graphviz](https://graphviz.org/download/),并确保将其bin目录添加到系统PATH中 - macOS: `brew install graphviz` - Linux: `sudo apt-get install graphviz` 或对应发行版的包管理器命令 ## 快速测试 本项目包含一个示例文件和测试脚本,可以快速测试代码分析器的功能: 1. 首先确保安装了所需的依赖: ```bash pip install -r requirements.txt ``` 2. 运行测试脚本,将分析当前目录中的Python文件: ```bash python test_analyzer.py ``` 测试脚本会自动打开生成的SVG图表,并显示生成的摘要文件的路径。 ## 使用方法 基本使用方法如下: ```bash python code_analyzer.py 代码仓库路径 [选项] ``` ### 命令行参数 - `代码仓库路径`: 要分析的Python代码仓库的路径 - `--output`, `-o`: 指定分析结果的输出目录,默认为"analysis_output" - `--verbose`, `-v`: 显示详细输出信息,包括错误堆栈跟踪 - `--exclude`, `-e`: 指定要排除的目录,可多次使用此参数添加多个目录 - `--max-files`, `-m`: 限制最大分析文件数量,对于大型仓库很有用 默认情况下,已排除以下目录:`venv`, `.venv`, `env`, `.env`, `__pycache__`, `.git`, `.idea`, `.vscode` ### 示例 分析指定仓库: ```bash python code_analyzer.py /path/to/your/repo ``` 指定输出目录和排除额外目录: ```bash python code_analyzer.py /path/to/your/repo -o analysis_results -e tests -e docs ``` 限制分析文件数量并启用详细日志: ```bash python code_analyzer.py /path/to/your/repo -m 100 -v ``` ## 输出说明 分析完成后,在指定的输出目录中会生成以下文件: 1. `file_structure.svg`: 文件结构图,展示代码库中的目录和文件层次结构 2. `code_structure.svg`: 代码结构图,展示函数/类之间的调用关系 3. `module_dependencies.svg`: 模块依赖图,展示模块之间的导入关系 4. `simple_code_structure.svg`: 简化版代码结构图(如果完整版生成失败) 5. `function_summaries.md`: 函数摘要,包含所有函数的详细信息,按文件组织 6. `class_summaries.md`: 类摘要,包含所有类的详细信息,按文件组织 7. `import_summaries.md`: 导入摘要,列出每个文件中的导入语句 ## 分析内容详情 ### 函数分析 对于函数,本工具会分析并提取以下信息: - 函数名称和位置(文件、行号) - 参数列表,包括参数名、类型注解和默认值 - 返回值类型注解 - 函数的文档字符串 - 函数调用的其他函数 - 装饰器 ### 类分析 对于类,本工具会分析并提取以下信息: - 类名称和位置(文件、行号) - 继承的基类 - 类方法列表 - 类属性及其类型注解和默认值 - 类的文档字符串 - 装饰器 ### 导入分析 对于导入语句,本工具会分析并提取以下信息: - 导入的模块和包 - 导入的别名 - 相对导入的层级 - 从特定模块导入的具体对象 ## 工作原理 1. 使用Python的`os.walk`遍历整个代码库,找出所有Python文件(排除指定目录) 2. 使用`ast`(Abstract Syntax Tree)模块解析每个Python文件 3. 提取并分析所有函数、类、导入语句及它们之间的关系 4. 分析模块之间的依赖关系 5. 使用`graphviz`生成可视化的结构图 6. 生成Markdown格式的摘要文档 ## 局限性 - 目前仅支持Python代码的分析 - 函数调用关系可能无法完全准确捕获动态调用(如通过反射或`getattr`等方式的调用) - 复杂的代码结构可能导致图表变得复杂且难以阅读 - 对于非常大的代码库,分析可能需要较长时间,建议使用`--max-files`参数限制文件数量 ## 常见问题解决 如果在运行时遇到以下问题,请尝试这些解决方案: ### Graphviz错误 如果遇到 "syntax error near '.'" 或其他Graphviz相关错误,可能是因为节点数量过多或ID格式问题。尝试: - 使用 `--max-files` 减少分析的文件数量 - 确保Graphviz正确安装并添加到PATH中 - 如果代码结构图生成失败,程序会尝试生成简化版本的图表 ### 内存使用过高 对于非常大的代码库,可能会消耗大量内存。建议: - 使用 `--max-files` 限制分析的文件数量 - 使用 `--exclude` 排除不需要分析的目录 ## 示例输出 文件结构图示例: ![文件结构图示例](file_structure_example.png) 代码结构图示例: ![代码结构图示例](code_structure_example.png) 模块依赖图示例: ![模块依赖图示例](module_dependencies_example.png)