用途
OctoCounts 用于统计公开 GitHub 仓库的源代码行数(SLOC,Source Lines of Code),帮助开发者、团队或相关方快速了解代码库规模、语言构成和代码质量概况,而无需将仓库克隆到本地。
主要能力
- 统计文件数、总行数、代码行、注释行、空行,并按编程语言分类汇总。
- 支持超过 200 种编程语言和文件类型,语言检测主要基于文件扩展名,对歧义文件可回退到 shebang 行和内容检测。
- 可自动跳过 node_modules、vendor、.git、build 输出等生成目录,使统计结果更贴近人工编写的源代码。
- 生成公开报告,报告按所有者、仓库、提交 SHA 和 tokei 版本存储,相同提交再次分析可直接命中缓存,无需重新下载和统计。
- 提供实时 README 徽章,可链接到永久报告。
- 支持两个仓库并排对比(总量、语言构成、差异),以及同一仓库两个 ref(如不同发布版本或分支)之间的增长对比。
- 提供 API、任务、报告、徽章、SEO 和统计端点。
- 可运行命令行工具或 CI 脚本,输出文本或 JSON。
- 可在拉取请求中评论 SLOC 变化,融入代码审查工作流。
- 可为智能体工作流和开发者助手提供 SLOC 报告。
- 支持导出为纯文本表格、JSON 结构化数据和 1200×630 的 PNG 图片卡片。
使用方式
- 网页端:粘贴公开 GitHub 仓库 URL 即可分析。OctoCounts 会校验 URL,并通过 GitHub API 将请求的分支、标签或提交 SHA 解析为固定的提交哈希,确保相同 URL 和 ref 始终得到相同计数,缓存键也保持稳定。后端使用 Rust 编写,下载压缩归档而非完整 git 克隆,随后由 tokei 在后台工作队列中统计每个源文件。
- 浏览器扩展:Chrome、Edge、Firefox 均有扩展,名称均为 “OctoCounts – GitHub SLOC & Code Statistics”。安装后,打开公开 GitHub 仓库页面,侧边栏会自动添加一张简洁的 SLOC 卡片,显示总行数和分析状态;点击卡片可打开完整面板,查看文件、总行、代码行、注释行、空行及按语言的细分。扩展包含本地缓存,重复访问同一仓库和 ref 时可即时加载。用户可以配置自动分析(页面加载后立即获取计数)或手动触发,还可设置卡片在 GitHub 侧边栏中的位置。无需 GitHub 账户或 API 令牌。
- 终端或 CI:可通过命令行或 CI 脚本运行,支持文本或 JSON 输出。
- 拉取请求:可在审查工作流中评论 SLOC 变化。
- 智能体工作流:可为开发者助手提供 SLOC 报告。
适用场景
- 评估依赖:在采用新的开源库之前,查看其实际规模,而不仅仅是文件数量。一个 50 个文件的仓库可能是 2 万行密集 C++,也可能是 500 行粘合代码。
- 估算项目规模:客户或利益相关方询问代码库大小时,可用 SLOC 提供可靠数字,例如“跨 8 种语言共 1.2 万行,89% 为代码,4% 为注释”。
- 对比 fork 或不同实现:粘贴两个仓库并排对比语言构成,了解 fork 分叉程度或同一规范下不同实现的差异。
限制
- 仅支持公开 GitHub 仓库,不支持私有仓库。
- 不要求 GitHub 账户访问权限,不接收源代码上传。
- 无广告,不收集个人数据。
- 若需统计私有仓库的代码行数,官方建议在本地运行 tokei。可从 github.com/XAMPPRocky/tokei 下载 tokei,克隆仓库后在根目录运行,其输出格式与 OctoCounts 相同。
- 浏览器扩展源代码公开在 GitHub。
收费情况
OctoCounts 对公开 GitHub 仓库完全免费,无需账户、API 密钥或注册,公开文档未提及速率限制。网页应用和浏览器扩展均免费,没有高级付费层级。如果愿意,可以自行托管整个技术栈,源代码位于 github.com/huanglizhuo/OctoCounts。