最后更新:2026-07-15
本文档记录已经落地的能力、当前限制和后续工作。复选框表示代码状态,不代表发布承诺。
ProgramViz 已具备可运行的 Qt 6 原型:可以扫描工程、统计代码行数、绘制文件树状图,并提供节点详情、外观设置和基础 Git 历史可视化。JPG 与 Git 演进 GIF 导出已经接入,但项目仍处于开发阶段,尚未完成跨平台验证、性能优化、安装打包和许可证配置。
- 建立 Qt 6 Widgets + CMake 工程。
- 设置 C++ 20、Ninja、Debug/Release presets。
- 配置 VS Code 的 CMake、构建、运行和 LLDB 调试入口。
- 建立可复现的 QTemporaryDir 测试 fixture。
- 选择工程目录并递归扫描。
- 识别常见源代码扩展名、CMakeLists.txt、Makefile 和 meson.build。
- 默认跳过版本控制目录、构建产物、缓存目录和符号链接。
- 读取文件大小、创建时间、修改时间和语言标识。
- 建立工程/文件夹/文件三级节点,并汇总父级代码量、文件数和文件夹数。
- 统计总行数、有效代码行、空行和基础注释行。
- 处理常见 C/C++ 风格块注释和行注释,以及 Python、Shell、XML 等格式的基础注释。
- 为行数统计、扫描和 HSI 转换建立 Qt Test 测试。
- 实现从左到右的层级布局、列宽计算、节点高度和父子连接线。
- 实现圆角矩形、层级配色、文本裁剪和最小可见尺寸。
- 支持悬停高亮、选中节点、详情面板、垂直滚动和窗口尺寸变化后的重新布局。
- 支持折叠/展开文件夹、适应窗口和展开所有名称。
- 支持同一目录下同名头文件与 C/C++ 源文件合并显示。
- 支持跟随系统、浅色和深色主题。
- 支持同级同色、逐级不同色系和 HSI 调色。
- 支持字号、最小高度比例、圆角比例、级间距、同级间距和实时预览。
- 使用 QSettings 保存外观、导出选项和最近工程目录。
- 支持 Git 分支和历史提交选择,并通过临时快照读取历史版本。
- 支持当前工程结构 JPG 导出。
- 支持 Git 历史读取、过渡帧生成和 ffmpeg GIF 编码。
- 支持命令行截图和无交互 GIF 导出。
- 将扫描移到工作线程,避免大型工程阻塞 UI。
- 增加扫描取消、细粒度进度和可持久化诊断日志。
- 增加扫描缓存或增量扫描,减少重复打开大型工程的等待时间。
- 为大工程增加性能基准,关注节点数量、布局时间和 GIF 帧生成时间。
- 优化大型工程的扫描、布局和 GIF 导出性能。
- 为无法识别编码、读取失败和超大文件提供明确的降级统计策略。
- 将源代码扩展名和忽略目录从代码默认值扩展为用户可配置项。
- 补充更多语言的注释规则和统计边界测试。
- 明确并固化 Markdown、生成文件和混合语言文件的统计口径。
- 增加缩放、平移、重置布局和更大规模工程的导航体验。
- 建立独立的布局算法测试,覆盖父子高度、列宽、折叠和合并节点。
- 完善键盘操作、焦点管理、屏幕阅读器语义和高对比度显示。
- 完善上色方案和用户自定义配色的管理。
- 继续验证 Git 历史插值、日期显示、分辨率自适应和导出取消行为。
- 使用不同规模的真实工程完成可用性测试;性能基准仍待补充。
- 完成 macOS 应用打包、签名准备和基础安装说明。
- 增加 Windows/Linux 跨平台支持,并验证平台相关的文件打开行为。
- 补充截图、示例工程和用户文档。
- 确定开源许可证并添加第三方依赖声明。
- 发布首个可用版本。
完成一项功能后,同时更新本文件中的复选框和“当前状态”;若行为影响用户操作、构建配置、调试方式或命令行参数,也要同步更新 README.md 和 README_DEV.md。