bakhirev/assayo

GitHub: bakhirev/assayo

Assayo 通过解析 Git 提交日志自动生成包含工作节奏、职责范围、团队构成等维度分析的可视化 HTML 报告,帮助管理者量化研发效能。

Stars: 285 | Forks: 28

# [Assayo](https://bakhirev.github.io/?ref=github&lang=en) 创建包含提交统计分析的 HTML 报告: - 工作节奏和加班时长; - 职责范围、feature 和 bug 的数量; - 同事的工作风格; - 员工离职率和团队构成; - 开发者所在地; - 发布计划和假期日历; - feature 和整个项目的成本; - 需要 refactoring 的地方、已删除的文件等。 **相关链接:** [演示](https://bakhirev.github.io/demo/?ref=github&dump=./test.txt),[在线版本](https://bakhirev.github.io/demo/?ref=github),[docker](https://hub.docker.com/r/bakhirev/assayo),[reddit](https://www.reddit.com/r/ITManagers/comments/1e5k291/the_visualization_and_analysis_of_git_commit/),[habr](https://habr.com/ru/articles/852782/) **视频:** [英语](https://www.youtube.com/watch?v=uMbhrrd25t4),[西班牙语](https://www.youtube.com/watch?v=skmctb_2rZ0),[俄语](https://www.youtube.com/watch?v=jwCp_-bhrCQ) ### 目录 - [提交统计报告](#link-1) - [如何创建和查看报告?](#link-2) - [使用公共服务器](#link-3) - [使用 NodeJS 库](#link-4) - [使用 PHP 库](#link-5) - [使用 Python 库](#link-6) - [使用 Ruby 库](#link-7) - [使用 Go 库](#link-8) - [使用源代码](#link-9) - [使用 github actions](#link-10) - [使用私有服务器](#link-11) - [如何合并作者?](#link-12) - [如何将数据从 git 导出到 txt 文件?](#link-13) - [在线查看](#link-14) - [离线查看](#link-15) - [如果你在 Windows 中使用 PowerShell](#link-16) - [如何查看关于一组 microservice 的报告?](#link-17) - [项目中的最佳实践](#link-18) - [如何签署 commit?](#link-19) - [如何添加 commit message 检查?](#link-20) - [使用 commit-msg 文件](#link-21) - [使用 pre-commit 包](#link-22) - [关于本应用](#link-23) - [如何为界面定制品牌?](#link-24) - [如何从源代码重新构建 HTML 报告?](#link-25) - [如何添加或编辑翻译?](#link-26) - [️架构](#link-27) - [microservice 总体架构](#link-29) - [反馈与评论](#link-30) ## 提交统计报告 ### 📈 如何创建和查看报告? #### 使用公共服务器 - 访问该[网站](https://bakhirev.github.io/) - 按照说明操作 #### 使用 NodeJS 库 - 运行 `npx assayo` - 打开 `./assayo/index.html` #### 使用 PHP 库 - 运行 `composer require bakhirev/assayo` - 运行 `vendor/bin/assayo` - 打开 `./assayo/index.html` #### 使用 Python 库 - 运行 `pipx install assayo` - 运行 `assayo` - 打开 `./assayo/index.html` #### 使用 Ruby 库 - 运行 `gem install assayo` - 运行 `assayo` - 打开 `./assayo/index.html` #### 使用 Go 库 - 运行 `go get github.com/bakhirev/assayo` - 运行 `go install github.com/bakhirev/assayo` - 运行 `assayo` - 打开 `./assayo/index.html` #### 使用源代码 - 下载此代码仓库 - 将 `log.txt` 文件拖放到 `/build` 目录 - 打开 `/build/index.html` - 或者将 `/build` 文件夹拖放到你的代码仓库中(`log.txt` 所在的位置)。你可以更改名称。例如,从 `/build` 改为 `/report`。 在这种情况下,请务必确保 `log.txt` 文件是使用离线查看的命令生成的。 #### 使用 github actions 将[脚本](https://github.com/bakhirev/assayo/blob/main/documents/ActionExample.yml)添加到 `.github/workflows/` 文件夹中,或者使用市场上的这个 [action](https://github.com/marketplace/actions/assayo)。一份新鲜出炉的报告将会保存在构建产物(artifacts)中。 #### 使用私有服务器 - 下载 [docker 镜像](https://hub.docker.com/r/bakhirev/assayo); - 在你的本地网络中运行它; - 使用 web 界面查看报告,并在 URL 参数 `dump` 中设置数据的 URL: ``` http://assayo_url/?dump=//you_url/some/log.txt assayo_url - URL of the assayo container, it listens on port 80; you_url - URL of your container with git logs; ``` 默认情况下,该镜像将在 `http://127.0.0.1:80/` 运行。如果无法运行,请检查端口 `80` 是否空闲。 ### ‍🎭 如何合并作者? 在你的项目根目录下,你需要创建一个 `.mailmap` 文件。 文件内容示例: ``` Alex B Alex B Alex B Alex B ``` 你可以[在这里](https://git-scm.com/docs/gitmailmap)阅读关于此文件格式的更多信息。 ### 📤 如何将数据从 git 导出到 txt 文件? #### 在线查看 在你的项目根目录下运行: #### 离线查看 Git 将创建一个 `log.txt` 文件。此文件包含用于显示报告的数据。在线格式与离线格式的区别在于是否带有字符串包装。如果你直接打开了 `/build/index.html`,离线格式将像 `js` 文件一样被加载。 #### 如果你在 Windows 中使用 PowerShell 默认情况下,输出编码可能与 UTF-8 不匹配,生成的日志文件将无法读取。在保存日志之前,你可以使用命令更改编码。 ``` [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 ``` 或者打开已保存的文件并手动将编码更改为 UTF-8。 ### 🗃️ 如何查看关于一组 microservice 的报告? - 为每个 microservice 生成文件 `log.txt`(`log-1.txt`、`log-2.txt`、`log-3.txt` 等)。你可以手动执行此操作,也可以使用 [Assayo Crawler](https://github.com/bakhirev/assayo-crawler) 模块自动收集日志; - 参阅“如何查看在线报告?”。在最后一步,将所有文件一次性拖到浏览器窗口中。 - 参阅“如何离线查看报告?”。在第二步,将所有 microservice 文件(`log-1.txt`、`log-2.txt`、`log-3.txt` 等)拖到报告文件夹(`/build`)中。 ## 项目中的最佳实践 ### 📝 如何签署 commit? 遵循 [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/) 规范。示例: ``` JIRA-1234 feat(profile): Added avatar for user ``` - 任务追踪器中的任务编号 `(JIRA-1234)` - 工作类型 `(feat, fix, style, refactor, test, doc, 等)` - feature `(profile - 网站上的新页面或新功能,使用一(两)个简短的单词或缩写)` - 解决了什么问题 `(Added avatar for user)` ### 👮 如何添加 commit message 检查? #### 使用 commit-msg 文件 1. 在 `.git/hooks/` 文件夹中创建文件 `commit-msg` 2. 将以下文本添加到文件中: ``` #!/usr/bin/env bash if ! grep -iqE "(JIRA-[0-9]{1,5})(s)(feat|fix|docs|style|refactor|test|chore)((([a-z0-9_-]{1,})){0,})(:s)([a-z]{1,})" "$1"; then echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2 exit 1 fi ``` #### 使用 [pre-commit](https://www.npmjs.com/package/pre-commit) 包 1. 在 `package.json` 文件中添加 `commit-msg` 属性: ``` ... "commit-msg": { "regex": "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})", "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages" }, ... ``` 2. 运行命令 `npm install pre-commit` ## 关于本应用 ### 🎨 如何为界面定制品牌? 你可以创建自己的界面主题。选项: - **标题**。你可以在 URL 参数 `title` 中设置默认的文档标题。示例:`?title=You Company` - **视觉主题**。为此,你需要准备一个包含新样式的 CSS 文件,并在 `theme` 参数中指定其 URL。示例:`?theme=//company.com/some.css`。你可以使用类名作为选择器。它们中的大多数在新版本中都不会改变。 - **语言**。你可以在 URL 参数 `lang` 中设置语言。示例:`?lang=es` **示例:** [演示](https://bakhirev.github.io/demo/themes/) ### 🛠️ 如何从源代码重新构建 HTML 报告? - 下载此代码仓库 `git clone https://github.com/bakhirev/assayo.git` - 运行 `npm install` - 运行 `npm run build:local` - 新的 HTML 构建版本将位于 `/build` 文件夹中 ### 🈯 如何添加或编辑翻译? 你可以在 `ts/translations/` 文件夹中添加新的翻译或修改现有翻译。 [指南](https://github.com/firstcontributions/first-contributions) ### 📐 ️架构 #### microservice 总体架构 1. [报告展示 UI](https://github.com/bakhirev/assayo-showcase) 显示可用报告列表。每个报告由标题、描述和代码仓库列表组成。 2. [Crawler 服务](https://github.com/bakhirev/assayo-crawler) 收集报告所需的仓库日志。 3. [日志可视化 UI](https://github.com/bakhirev/assayo) **(你在这里)** 显示报告。需要一个日志文件才能工作。 ### 📧 反馈与评论 - 📱 [https://t.me/bakhirev](https://t.me/bakhirev)(优先沟通方式) - 📧 [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru) - 🌐 [https://bakhirev.github.io/](https://bakhirev.github.io/?ref=github&lang=en)
标签:Git, Linux 内核安全, MITM代理, SOC Prime, 代码分析, 凭证管理, 开发工具, 日志审计, 研发效能, 自动化攻击, 请求拦截, 逆向工具, 项目管理