使用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 列就是有效代码行数,它已经排除了空白行和注释行。

相关推荐
一 乐14 分钟前
物业管理系统|小区物业管理|基于SprinBoot+vue的小区物业管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
稚辉君.MCA_P8_Java17 分钟前
RocketMQ 是什么?它的架构是怎么样的?和 Kafka 又有什么区别?
后端·架构·kafka·kubernetes·rocketmq
yolo_Yang33 分钟前
【Spring Boot】Spring Boot解决循环依赖
java·spring boot·后端
wdfk_prog1 小时前
结合QBoot与HPatchLite实现高效差分升级(FOTA)
java·后端·struts
舒一笑1 小时前
用数据照亮成长之路:PandaCoder Git 统计工具窗口
git·后端·intellij idea
小妖同学学AI3 小时前
Rust 深度解析:基本类型的“精确”艺术
开发语言·后端·rust
我命由我123453 小时前
Guava - Guava 基本工具 Preconditions、Optional
java·服务器·开发语言·后端·java-ee·guava·后端框架
Python私教3 小时前
Rust 快速入门:从零到上手的系统指南
开发语言·后端·rust
JosieBook3 小时前
【SpringBoot】30 核心功能 - 单元测试 - JUnit5 单元测试简介与常用注解实战详解
spring boot·后端·单元测试
cj6341181504 小时前
网卡驱动架构以及源码分析
java·后端