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

相关推荐
一个有梦有戏的人1 天前
Python3基础:函数基础,解锁模块化编程新技能
后端·python
逍遥德1 天前
Sring事务详解之02.如何使用编程式事务?
java·服务器·数据库·后端·sql·spring
qq_297574671 天前
【实战教程】SpringBoot 实现多文件批量下载并打包为 ZIP 压缩包
java·spring boot·后端
计算机程序设计小李同学2 天前
基于 Spring Boot + Vue 的龙虾专营店管理系统的设计与实现
java·spring boot·后端·spring·vue
Charlie_lll2 天前
力扣解题-[3379]转换数组
数据结构·后端·算法·leetcode
VX:Fegn08952 天前
计算机毕业设计|基于springboot + vue云租车平台系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
汤姆yu2 天前
2026基于springboot的在线招聘系统
java·spring boot·后端
计算机学姐2 天前
基于SpringBoot的校园社团管理系统
java·vue.js·spring boot·后端·spring·信息可视化·推荐算法
hssfscv2 天前
Javaweb学习笔记——后端实战8 springboot原理
笔记·后端·学习
咚为2 天前
Rust tokio:Task ≠ Thread:Tokio 调度模型中的“假并发”与真实代价
开发语言·后端·rust