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

相关推荐
neoooo1 小时前
当域名遇上家里的电脑:一条隧道通向世界
后端
zjjuejin1 小时前
Maven依赖管理艺术
后端·maven
RoyLin1 小时前
TypeScript设计模式:复合模式
前端·后端·typescript
我的小月月1 小时前
SQLFE:网页版数据库(VUE3+Node.js)
前端·后端
Alan521591 小时前
Java 后端实现基于 JWT 的用户认证和权限校验(含代码讲解)
前端·后端
RoyLin2 小时前
TypeScript设计模式:策略模式
前端·后端·typescript
brzhang2 小时前
为什么说低代码谎言的破灭,是AI原生开发的起点?
前端·后端·架构
得物技术2 小时前
破解gh-ost变更导致MySQL表膨胀之谜|得物技术
数据库·后端·mysql
小码编匠3 小时前
WPF 中的高级交互通过右键拖动实现图像灵活缩放
后端·c#·.net