Go语言开发的源代码行数统计工具

目录

    • 功能特点
    • 未来开发计划
    • 安装
    • 使用方法
      • 示例
      • 命令
        • 通用命令
        • 参数选项
    • 示例
      • 分析特定目录
      • 仅包含特定语言
      • 排除特定扩展名的文件
      • 生成 JSON 格式的输出
      • 显示支持的语言

仓库地址

gcloc 是一个开源工具,用于统计各种编程语言的源代码文件数量和代码行数。它支持多种语言,易于扩展以包括自定义语言。gcloc 简单易用,可以帮助开发者快速了解代码库并跟踪变化。


功能特点

  • 语言支持: 统计多个编程语言的文件数、空白行数、注释行数和代码行数。
  • 可定制化: 根据需要添加更多语言支持。
  • 高性能: 使用并发处理技术,高效地获取和分析文件,即使是大型代码库也能快速完成。
  • 输出格式: 支持多种输出格式,包括默认表格视图、XML、JSON 和 Sloccount 格式。
  • 过滤功能: 根据文件扩展名、正则表达式模式或特定语言包括或排除文件和目录。
  • 详细统计: 可选按文件报告统计结果。

未来开发计划

  • 支持 Git 仓库

    • 直接分析 Git 仓库,而无需指定目录。
    • 显示整个仓库的统计数据,包括提交历史。
  • 支持 Web 界面

    • 创建适配 gcloc 的 Web 界面,提供用户友好的使用体验。
    • 允许用户上传文件或目录以供分析。
  • 支持压缩文件

    • 分析压缩文件(如 .zip, .tar.gz)而无需手动解压。
    • 动态解压并分析文件,提供准确的统计结果。

安装

使用以下命令安装最新版本:

go install github.com/Scorpio69t/gcloc/app/gcloc@latest

或者,从 Releases 页面下载预编译的二进制文件。


使用方法

gcloc [flags] PATH...
gcloc [command]

示例

分析当前目录:

gcloc .

示例输出:

$gcloc .
github.com/Scorpio69t/gcloc T=0.03 s (7318.7 files/s 2219353.8 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C++ Header                       8           9494           3756          37956
C++                             28           3137           1752          13517
JSON                            43              1              0           9368
...
Total                          249          14710           7060          75508
-------------------------------------------------------------------------------

命令

通用命令
  • completion: 为当前 Shell 生成自动补全脚本。
  • help: 显示命令帮助信息。
  • show-lang: 列出所有支持的语言及其扩展名。
  • version: 显示 gcloc 的版本信息。
参数选项
参数描述
--by-file报告每个源文件的统计结果。
--debug为开发者输出调试日志。
--exclude-ext排除指定扩展名的文件(逗号分隔)。
--exclude-lang排除指定语言(逗号分隔)。
--include-lang包括指定语言(逗号分隔)。
--match包括符合正则表达式的文件。
--not-match排除符合正则表达式的文件。
--match-d包括符合正则表达式的目录。
--not-match-d排除符合正则表达式的目录。
--output-type输出格式:[default, gcloc-xml, sloccount, json]。
--skip-duplicated跳过重复文件。
--sort按 name, files, blanks, comments, codes 排序(默认 codes)。

示例

分析特定目录

gcloc /path/to/code

仅包含特定语言

gcloc --include-lang "C++,JSON" .

排除特定扩展名的文件

gcloc --exclude-ext "json,xml" .

生成 JSON 格式的输出

gcloc --output-type json .

显示支持的语言

gcloc show-lang

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/61853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java操作doc——java利用Aspose.Words操作Word文档并动态设置单元格合并

在实际工作中,如果业务线是管理类项目或者存在大量报表需要导出的业务时,可以借助第三方插件实现其对应功能。 尤其是需要对word文档的动态操作或者模板数据的定向合并,使用Aspose会相对来说容易一些,而且相关文档比较完整&#…

电商一件发货软件闲管家使用教程

闲鱼闲管家是一款专为闲鱼卖家设计的电脑版工作台,旨在帮助卖家更高效地管理其在闲鱼平台上的业务。以下是关于闲鱼闲管家的一些主要特点和功能: 主要特点: 多账号管理:支持同时管理多达30个闲鱼账号,方便大型卖家或…

Docker Seata分布式事务保护搭建 DB数据源版搭建 结合Nacos服务注册

介绍 Seata(Simple Extensible Autonomous Transaction Architecture)是一个开源的分布式事务解决方案,旨在为微服务架构中的分布式系统提供事务管理支持。Seata 通过提供全局事务管理,帮助开发者在分布式环境中保持数据一致性 …

HTB:WifineticTwo[WriteUP]

目录 连接至HTB服务器并启动靶机 信息搜集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机开放端口进行脚本、服务扫描 使用curl访问靶机8080端口 使用浏览器直接访问/login路径 漏洞利用 使用searchsploit搜索该WebAPP漏洞 Payload USER_FLAG:bb…

CSS浮动:概念、特性与应用

CSS浮动是网页设计和开发中常见的布局技术之一,以下是CSS浮动相关的所有重要知识点: 一、浮动的定义与语法 浮动(float)属性可以指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。浮动属性最初只用…

【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置

🎁个人主页:我们的五年 🔍系列专栏:MySQL课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 MySQL在Centos 7环境下的安装: 卸载…

面向对象高级(7)注解

面向对象高级 注解(Annovation) 1、注解的概述 注解(Annotation)以“注解名”在代码中存在。例如: Override Deprecated SuppressWarnings(value”unchecked”) Annotation 可以像修饰符一样被使用,用…

oracle如何配置第二个监听优化数据传输

oracle如何配置第二个监听优化数据传输 服务器两个网卡,配置两个不同IP和端口的监听。 归档日志量每天很大,为了不影响业务,需要配置一个单独的万兆网络来专门的传输归档日志到DG库,这里就涉及到在19c中增加一个监听用来使用专门…

使用Redis生成全局唯一id

为了生成一个符合要求的分布式全局ID,我们可以使用 StringRedisTemplate 来实现。这个ID由三部分组成: 符号位(1 bit):始终为0,表示正数。时间戳(31 bit):表示从某个起始…

Feed流系统重构:架构篇

重构对我而言,最大的乐趣在于解决问题。我曾参与一个C#彩票算奖系统的重构,那时系统常因超时引发用户投诉。接手任务时,我既激动又紧张,连续两天几乎废寝忘食地编码。结果令人振奋,算奖时间从一小时大幅缩短至十分钟。…

【Linux驱动开发】驱动中的信号 异步通知开发

【Linux驱动开发】驱动中的信号 异步通知开发 文章目录 应用中的信号驱动中的信号应用程序接收驱动信号附录:嵌入式Linux驱动开发基本步骤开发环境驱动文件编译驱动安装驱动自动创建设备节点文件 驱动开发驱动设备号地址映射,虚拟内存和硬件内存地址字符…

【MySQL】mysql常用不常用法(持续更新)

注意:对数据做操作时做好备份 1、查询mysql数据表中某字段有重复的数据 适用场景,如: 用户表同名的有那些人,那些名称是重复出现的 SQL语法: SELECT t.*, COUNT(*) AS x_count FROM [table_name] t GROUP BY [检查…

C++设计模式:建造者模式(Builder) 房屋建造案例

什么是建造者模式? 建造者模式是一种创建型设计模式,它用于一步步地构建一个复杂对象,同时将对象的构建过程与它的表示分离开。简单来说: 它将复杂对象的“建造步骤”分成多部分,让我们可以灵活地控制这些步骤。通过…

单片机智能家居火灾环境安全检测-分享

目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 电路图采用Altium Designer进行设计: 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 传统的火灾报警系统大多依赖于简单的烟雾探测器或温度传感器,…

Java开发经验——系统日志问题

摘要 本文讨论了Java开发中的系统日志设置问题,特别是性能优化。文章分析了使用占位符记录slowString的耗时问题,并提出了使用lambda表达式和Log4j2 API来延迟参数内容获取,以解决性能问题。同时,文章还提到了SLF4J适配器的好处&…

mysql | limit X, -1 早已不可使用,本身也是一个错误

一、背景 需求:使用 mysql 时,需要获取第 X 条数据之后的所有数据。 这时,首先想到的就是利用 limit 来实现。 早期的部分文章或者资料中,提到可以使用: limit X,-1 例如,获取第一条后的所有数据&…

使用Spring TestContext框架

Spring TestContext框架是Spring框架的一部分,旨在简化Spring应用程序的集成测试。它提供了一组注解和实用工具,帮助开发人员在测试中轻松加载和管理Spring应用程序上下文。以下是如何使用Spring TestContext框架进行集成测试的详细指南。 1. 添加依赖 …

leetcode代码 50道答案

‌简单难度:两数之和 def twoSum(nums, target): for i in range(len(nums)): for j in range(i 1, len(nums)): if nums[i] nums[j] target: return [i, j] return [] 简单难度:有效的括号 def isVa…

C++:探索AVL树旋转的奥秘

文章目录 前言 AVL树为什么要旋转?一、插入一个值的大概过程1. 插入一个值的大致过程2. 平衡因子更新原则3. 旋转处理的目的 二、左单旋1. 左单旋旋转方式总处理图2. 左单旋具体会遇到的情况3. 左单旋代码总结 三、右单旋1. 右单旋旋转方式总处理图2. 右单旋具体会遇…

排序算法(选择排序、直接插入排序、冒泡排序、二路归并排序)(C语言版)

对数组进行排序,主要演示选择排序、直接排序、冒泡排序、二路归并排序算法,附上代码演示 一、编写好各类排序方法的函数 (1) s_sort(int e[],int n):选择排序。 (2)si_sort(int e[],int n):直接插人排序。…