ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

把依赖图发布成项目文档:Rubrowser自包含HTML输出接入CI构建指南

把依赖图发布成项目文档:Rubrowser自包含HTML输出接入CI构建指南 把依赖图发布成项目文档Rubrowser自包含HTML输出接入CI构建指南【免费下载链接】rubrowsera ruby code dependency graph interactive visualizer项目地址: https://gitcode.com/gh_mirrors/ru/rubrowserRubrowser 是一款 Ruby 代码依赖图可视化工具能把项目中的类、模块及其依赖关系渲染成一张交互式依赖图并输出为单个自包含 HTML 文件数据、脚本、页面全部打包在一起。本文介绍如何把 Rubrowser 的自包含 HTML 输出接入 CI 构建让依赖图随每次构建自动生成、自动发布为项目文档——团队成员只需打开一个 HTML 文件就能看懂整个代码结构。为什么自包含 HTML 适合发布成文档 Rubrowser 从 2.0.0 版本起不再运行 HTTP 服务器而是直接生成一个自包含的 HTML 文件。官方说明见 readme.md 中的 Note 一节也即数据、脚本、HTML 都在一个文件里可以在 CI 构建中生成并发布为项目文档。这种方式对文档化非常友好✅零依赖不需要启动服务双击就能在浏览器打开✅可归档产物可以提交到仓库、随静态站点如项目 Pages直接托管✅可离线断网环境、内部文档服务器均可正常展示✅可交互拖拽固定节点、缩放平移、点击高亮所有依赖与被依赖关系从实现上看渲染入口在lib/rubrowser/renderer.rb它用lib/rubrowser/data.rb解析出的类/模块定义与关系数据套用views/index.erb模板把前端逻辑public/javascript/application.js一并内联最终写出单个 HTML 文件。想深入了解解析逻辑可以从spec/parser/下的测试夹具如class_with_one_class_dependency.rb入手。 想看完整源码可以克隆仓库浏览实现git clone https://gitcode.com/gh_mirrors/ru/rubrowser快速上手3 步在本地生成依赖图第 1 步安装 Rubrowsergem install rubrowser第 2 步执行分析并输出 HTMLrubrowser -o docs/dependency-graph.html不加参数时默认分析当前目录-o指定输出文件。第 3 步打开查看用浏览器打开生成的文件即可。节点圆圈大小与该类/模块的代码行数成正比红色标记表示存在循环依赖。接入 CI 构建让依赖图随构建自动更新 ⚙️把依赖图放进 CI 后每次合并代码都会刷新文档无需任何人手动执行命令。分三步1. 将 Rubrowser 加入开发依赖在Gemfile的 development 分组中加入gem rubrowser2. 添加一个构建任务在你的 CI 配置中新增一个任务执行 Rubrowser 并把产物声明为 artifacts或部署到静态站点build-graph: script: - bundle exec rubrowser -o docs/dependency-graph.html artifacts: paths: - docs/dependency-graph.html3. 发布产物简单场景把docs/dependency-graph.html直接提交或归档附在发布说明中进阶场景把docs/目录部署为静态站点团队成员固定链接随时查阅这样依赖图 → 项目文档的链路就闭环了代码变更 → CI 自动重建依赖图 → 文档同步更新。固定布局用 .rubrowser 让每次构建的图保持一致 自包含 HTML 每次生成的节点位置是随机的文档里的图每构建一次就抖一次阅读体验不好。Rubrowser 提供了布局文件机制在浏览器里手动拖拽节点把布局调整到满意的位置点击页面上的按钮把当前布局下载为 JSON节点固定坐标将该文件保存到项目中官方推荐命名为.rubrowser生成时通过-l参数嵌入布局rubrowser -l .rubrowser -o docs/dependency-graph.html把这个.rubrowser提交到仓库后CI 每次构建都会得到布局稳定的依赖图文档截图与链接位置都不会漂移。常用参数速查表参数作用-o FILE指定输出文件缺省写到 stdout可用rubrowser output.html-l FILE嵌入布局文件固定节点位置-j以 JSON 而非 HTML 导出数据-T页面中不显示工具箱-s SERVER:PORT连接监控服务器实时高亮执行路径-v/-h打印版本 / 帮助导出 JSON对接其他文档工具 除了 HTMLRubrowser 还能把解析结果导出为结构化数据实现见lib/rubrowser/formatter/json.rbrubrowser -j | jq .你可以用它做二次加工例如统计模块数量、生成依赖清单文档或喂给其他可视化工具。了解局限静态分析的边界 接入 CI 前建议把以下 4 点预期同步给团队均见readme.md语法错误的文件会被跳过仅打印警告不会中断构建项目外引用的类不会出现在图中只展示你定义的类/模块纯静态分析元编程包括 Rails 的 associations不在覆盖范围循环依赖通过强连通分量算法检出并以红色标记逻辑在lib/rubrowser/data.rb的mark_circular_dependencies进阶把执行追踪也叠加到文档图上 如果希望依赖图不仅能看结构还能看运行时可以启用监控模式在应用启动前Rails 项目可放在 initializer运行Rubrowser::Monitor.run(path: Rails.root.to_s, port: 8080)然后生成连接监控端的图rubrowser -s localhost:8080 output.html运行代码时图上对应节点会实时高亮实现来自lib/rubrowser/monitor.rb与lib/rubrowser/server.rb。这一模式更适合本地调试CI 场景用前面介绍的静态 HTML 输出即可。小结Rubrowser 2.0 输出的是自包含 HTML天然适合作为项目文档发布接入 CI 只需两行gem rubrowser 一个执行rubrowser -o docs/...的构建任务提交.rubrowser布局文件让每次构建的依赖图布局保持稳定静态分析有边界对元编程重度依赖的项目请合理预期把依赖图变成每次构建自动更新的活文档新成员接手项目时的上手成本会显著降低。【免费下载链接】rubrowsera ruby code dependency graph interactive visualizer项目地址: https://gitcode.com/gh_mirrors/ru/rubrowser创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表