使用cloc统计代码行数

cloc(Count Lines of Code)是一款很棒的开源命令行工具,它能帮你详细统计项目中的文件数(files)、空白行数(blank)、注释行数(comment)和代码行数(code) 。它会自动识别多种编程语言,并且支持在多平台上使用。

项目地址:github.com/AlDanial/cl...

下面我为你介绍一下它的安装和常用方法。

🧑‍💻 安装 cloc

cloc 的安装方法很多,你可以根据自己常用的操作系统选择命令

操作系统/包管理器 安装命令
npm npm install -g cloc
Debian, Ubuntu sudo apt install cloc
Red Hat, Fedora sudo yum install cloc
Fedora 22 or later sudo dnf install cloc
Arch sudo pacman -S cloc
Gentoo sudo emerge -av dev-util/cloc
Alpine Linux sudo apk add cloc
OpenBSD doas pkg_add cloc
FreeBSD sudo pkg install cloc
macOS with MacPorts sudo port install cloc
macOS with Homebrew brew install cloc
Windows with Chocolatey choco install cloc
Windows with Scoop scoop install cloc

📊 基本使用命令

安装好后,在终端或命令行中就可以使用 cloc 命令了。

  • 统计当前目录下的代码情况:在项目根目录下执行:

    bash

    erlang 复制代码
    cloc .

    这会对当前目录(包括子目录)中的所有源代码进行统计。

  • 统计指定目录或文件 :只需将 . 替换为你的目录路径或文件路径即可:

    bash

    bash 复制代码
    cloc /path/to/your/project
    cloc /path/to/your/file.py

🎯 常用选项和场景

cloc 提供了一些非常实用的选项来满足不同需求:

  • 排除特定目录 :这在项目有很多依赖(如 node_modules, vendor, Pods 等)时非常有用,可以避免统计这些目录下的代码

    bash

    ini 复制代码
    cloc . --exclude-dir=node_modules,Pods,venv
  • 排除特定语言 :如果你不希望统计某些特定语言的文件(比如只想看后端代码,排除前端代码),可以使用

    bash

    css 复制代码
    cloc . --exclude-lang=CSS,HTML,Markdown
  • 仅统计特定语言 :与排除语言相反,你可以只关注某几种语言

    bash

    ini 复制代码
    cloc . --include-lang=Python,Java,JavaScript
    # 或者通过扩展名
    cloc . --include-ext=.py,.java,.js
  • 按文件查看统计结果 :此选项会列出每个文件的详细统计信息,方便你查看具体哪个文件代码量最多

    bash

    csharp 复制代码
    cloc . --by-file
  • 将统计结果输出到文件 :cloc 支持将统计结果输出为多种格式,便于保存或后续分析,如纯文本、CSV、JSON、XML、YAML 等

    bash

    ini 复制代码
    cloc . --out=result.txt  # 输出为文本文件
    cloc . --csv --out=result.csv  # 输出为CSV文件
    cloc . --json --out=result.json  # 输出为JSON文件

💡 理解统计结果

执行 cloc 命令后,你会看到一个清晰的表格格式输出,例如

text

markdown 复制代码
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                          48            651           1211           5045
JavaScript                     10            188            121            875
CSS                             3             18             25            125
-------------------------------------------------------------------------------
SUM:                            61            857           1357           6045

在这个结果中:

  • files: 对应语言的文件数量。
  • blank: 空白行的数量。
  • comment: 注释行的数量。
  • code : 有效代码行数 ,这也是你通常最关心的数字。
    表格最后会有一个所有语言的汇总(SUM)。

🚨 注意特殊情况

  • cloc 对于压缩包 (如 .tar.gz, .zip)也可以直接统计

    bash

    复制代码
    cloc perl-5.22.0.tar.gz
  • 使用 --exclude-dir 时,目录名称要准确,且如果需要排除多个目录,用逗号分隔

  • cloc 的统计结果是基于它内置的语言定义 。在极少数情况下,如果某些非常冷门的文件格式未被正确识别,你可能需要通过 --read-lang-def 选项来自定义语言定义

  • 通常认为 code 列就是有效代码行数,它已经排除了空白行和注释行。

相关推荐
神奇小汤圆22 分钟前
浅析二叉树、B树、B+树和MySQL索引底层原理
后端
文艺理科生31 分钟前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
前端·后端·架构
千寻girling32 分钟前
主管:”人家 Node 框架都用 Nest.js 了 , 你怎么还在用 Express ?“
前端·后端·面试
南极企鹅33 分钟前
springBoot项目有几个端口
java·spring boot·后端
Luke君6079735 分钟前
Spring Flux方法总结
后端
define952739 分钟前
高版本 MySQL 驱动的 DNS 陷阱
后端
忧郁的Mr.Li1 小时前
SpringBoot中实现多数据源配置
java·spring boot·后端
暮色妖娆丶2 小时前
SpringBoot 启动流程源码分析 ~ 它其实不复杂
spring boot·后端·spring
Coder_Boy_2 小时前
Deeplearning4j+ Spring Boot 电商用户复购预测案例中相关概念
java·人工智能·spring boot·后端·spring
Java后端的Ai之路2 小时前
【Spring全家桶】-一文弄懂Spring Cloud Gateway
java·后端·spring cloud·gateway