DEV_GUIDE.md 4.84 KB
Newer Older
chengshunyan's avatar
chengshunyan committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# 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**: 支持更多的性能基准测试。


---