# DCU Performance Analyzer 开发文档

## 概述

本文档旨在为 DCU Performance Analyzer 的开发者提供技术细节和架构说明。该工具是一个基于Python的性能分析框架，用于自动化DCU环境的检查和监控。

## 架构设计

### 核心组件
- **主类 (`DCUPerformanceAnalyzer`)**: 负责管理整个分析流程，包括初始化、检查执行、报告生成和数据打包。
- **数据结构 (`CheckResult`)**: 统一的检查结果数据模型，用于在不同模块间传递数据。
- **检查模块 (check_*)**: 每个检查模块是一个独立的函数，负责执行特定的检查任务并返回 `CheckResult` 对象。
- **命令行界面 (CLI)**: 使用 `argparse` 构建，提供用户友好的交互界面。
- **日志系统**: 使用 `logging` 模块，支持调试模式和静默模式。

### 目录结构
```
dcuprofiletools/
├── dcu_performance_analyzer.py # 主程序
├── env_check/                 # 原始脚本目录
│   └── dcu_env_check-main/
├── dist/                      # PyInstaller打包输出
│   └── dcu_analyzer          # 可执行文件
├── USER_MANUAL.md             # 用户手册
└── DEV_GUIDE.md               # 开发文档
```

## 技术栈

- **编程语言**: Python 3.7+
- **核心库**:
  - `argparse`: 命令行解析
  - `subprocess`: 执行shell命令
  - `logging`: 日志记录
  - `json`: 数据序列化
  - `tarfile`: 文件打包
  - `concurrent.futures`: 并发处理
  - `dataclasses`: 数据结构定义
- **打包工具**: PyInstaller

## 模块详解

### `DCUPerformanceAnalyzer`

#### `__init__(self, output_dir, debug, quiet)`
- 初始化输出目录、日志系统和结果列表。
- 创建必要的子目录（logs, data, reports）。

#### `_setup_logging(self)`
- 配置日志处理器（文件和控制台）。
- 根据 `debug` 和 `quiet` 参数设置日志级别。

#### `run_command(self, cmd, timeout)`
- 使用 `subprocess.run` 执行shell命令。
- 捕获标准输出、标准错误和返回码。
- 处理超时和异常情况。

#### `check_*` 模块
- 每个模块负责一个独立的检查任务。
- 使用 `run_command` 执行必要的shell命令。
- 处理命令输出，提取关键信息。
- 构建并返回 `CheckResult` 对象。

#### `run_all_checks(self)`
- 使用 `ThreadPoolExecutor` 并发执行所有检查模块。
- 收集 `CheckResult` 对象。

#### `generate_report(self)`
- 统计检查结果（PASS, FAIL, WARNING）。
- 生成JSON和文本格式的报告文件。

#### `create_package(self)`
- 使用 `tarfile` 将整个输出目录打包成 `tar.gz` 文件。

### `create_cli()`
- 使用 `argparse` 定义命令行参数和帮助信息。

### `main()`
- 程序入口点。
- 解析命令行参数。
- 创建 `DCUPerformanceAnalyzer` 实例并运行分析。
- 处理异常和用户中断。

## 开发指南

### 添加新的检查模块
1. 在 `DCUPerformanceAnalyzer` 类中创建一个新的方法，命名为 `check_new_feature`。
2. 该方法应返回一个 `CheckResult` 对象。
3. 在方法内部，使用 `self.run_command` 执行必要的命令。
4. 处理命令输出，并根据结果设置 `CheckResult` 的状态和消息。
5. 将新模块添加到 `run_all_checks` 方法的检查列表中。
6. 在 `create_cli` 函数中，将新模块的名称添加到 `choices` 列表中。

### 扩展 `CheckResult`
- 如果需要添加新的字段，可以直接修改 `CheckResult` 的 `dataclass` 定义。
- 确保所有检查模块都正确填充新字段。

### 修改报告格式
- `generate_report` 方法负责生成报告。
- 可以修改JSON结构或文本摘要的格式。
- 确保向后兼容性，或更新版本号。

## 测试

### 单元测试
- 对每个检查模块编写单元测试，模拟不同的命令输出和异常情况。
- 使用 `unittest.mock` 来模拟 `subprocess.run`。

### 集成测试
- 运行完整的分析流程，验证所有模块的集成。
- 检查生成的报告和数据包是否正确。

### 手动测试
- 在不同的Linux发行版上测试可执行文件。
- 模拟各种错误情况（如权限不足、命令缺失）。

## 打包和发布

### 使用 PyInstaller
```bash
pip install pyinstaller
pyinstaller --onefile --name dcu_analyzer dcu_performance_analyzer.py
```

### 注意事项
- 确保所有依赖项都已安装。
- PyInstaller可能会产生较大的可执行文件，可以考虑使用虚拟环境来减小体积。
- 在目标平台上进行打包，以确保兼容性。

## 贡献

### 代码风格
- 遵循 PEP 8 代码风格指南。
- 使用类型提示（Type Hinting）。
- 编写清晰的文档字符串（Docstrings）。

### 提交规范
- 使用有意义的提交信息。
- 每个提交应包含一个独立的逻辑单元。
- 在提交前运行代码格式化和静态分析工具。

## 路线图

- **v1.1**: 支持更多的性能基准测试。


---
