tokei 在鸿蒙PC上的构建与适配

目录


工具简介

tokei(日语:時計,意为"时钟")是一个用 Rust 开发的命令行工具,用于快速统计代码行数。它可以显示项目中每种编程语言的文件数量、总行数、代码行数、注释行数和空白行数。

什么是 tokei?

tokei 是一个代码统计工具,类似于 cloc(Count Lines of Code),但速度更快、功能更强大。它能够:

  • 快速统计:在几秒钟内统计数百万行代码
  • 准确识别:正确识别 150+ 种编程语言及其扩展名
  • 智能分析:正确处理多行注释、嵌套注释和字符串中的注释
  • 多格式输出:支持 JSON、YAML、CBOR 等多种输出格式

先看编译成功的效果图

核心特性

  1. 极速性能:

    • 使用 Rust 编写,性能接近 C/C++
    • 多线程并行处理,充分利用多核 CPU
    • 能够快速处理大型代码库
  2. 准确性:

    • 正确处理多行注释
    • 识别嵌套注释
    • 不将字符串中的注释计入统计
    • 提供准确的代码统计信息
  3. 语言支持广泛:

    • 支持超过 150 种编程语言
    • 支持各种文件扩展名
    • 自动识别语言类型
  4. 多种输出格式:

    • 默认表格格式(美观易读)
    • JSON 格式(便于脚本处理)
    • YAML 格式(便于配置)
    • CBOR 格式(二进制格式)
  5. 跨平台支持:

    • 支持 macOS、Linux、Windows
    • 单一可执行文件,零运行时依赖
    • 无需额外配置即可使用
  6. 库支持:

    • 可以作为库集成到其他项目中
    • 提供完整的 API 文档

开发语言与设计优势

Rust 语言的优势:

  • 性能:编译后的二进制文件运行速度快,内存占用低
  • 安全性:内存安全保证,避免常见的内存错误
  • 并发性:原生支持多线程,充分利用多核 CPU
  • 可移植性:单一可执行文件,易于分发和部署

设计优势:

  • 零依赖:编译后是单个可执行文件,不需要额外的库
  • 快速启动:启动速度快,适合频繁使用
  • 资源占用低:内存和 CPU 占用小
  • 易于集成:可以轻松集成到 CI/CD 流程中

核心用途与场景

基本用法

1. 统计当前目录
bash 复制代码
# 统计当前目录及其子目录
tokei

# 统计指定目录
tokei /path/to/project

# 统计多个目录
tokei ./src ./tests ./examples
2. 输出格式选择
bash 复制代码
# 默认表格格式
tokei

# JSON 格式(便于脚本处理)
tokei --output json

# YAML 格式
tokei --output yaml

# CBOR 格式(二进制)
tokei --output cbor
3. 排序和筛选
bash 复制代码
# 按代码行数排序
tokei --sort code

# 按文件数量排序
tokei --sort files

# 只显示特定语言
tokei --type Rust

# 排除特定文件
tokei --exclude "*.lock"
tokei --exclude "target/"
4. 显示文件详情
bash 复制代码
# 显示每个文件的统计信息
tokei --files

# 显示文件路径
tokei --files --verbose

实际应用场景

场景 1:项目代码统计
bash 复制代码
# 统计整个项目的代码
tokei

# 输出示例:
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#  Language            Files        Lines         Code     Comments       Blanks
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#  Rust                   19         3416         2840          116          460
#  Markdown                5         1355            0         1074          281
#  TOML                    2           77           64            4            9
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#  Total                  26         4848         2904         1194          750
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
场景 2:CI/CD 集成
bash 复制代码
# 在 CI 中生成代码统计报告
tokei --output json > code_stats.json

# 检查代码行数是否超过阈值
tokei --type Rust | grep -E "Total|Rust" | awk '{if ($3 > 10000) exit 1}'
场景 3:项目对比
bash 复制代码
# 统计不同版本的代码量
tokei --output json > v1.0_stats.json
# 切换到新版本
tokei --output json > v2.0_stats.json
# 对比两个版本
diff v1.0_stats.json v2.0_stats.json
场景 4:代码质量监控
bash 复制代码
# 检查注释率
tokei --type Rust | awk '/Rust/ {if ($5/$3 < 0.1) print "Warning: Low comment ratio"}'

# 检查空白行比例
tokei --type Rust | awk '/Rust/ {if ($6/$3 > 0.3) print "Warning: High blank line ratio"}'
场景 5:文档生成
bash 复制代码
# 生成代码统计报告
tokei --output json | jq '.' > code_report.json

# 生成 Markdown 报告
tokei --output json | jq -r '
  "## Code Statistics\n",
  "| Language | Files | Lines | Code | Comments | Blanks |\n",
  "|----------|-------|-------|------|----------|--------|\n",
  (.languages | to_entries[] | 
    "| \(.key) | \(.value.stats.files) | \(.value.stats.lines) | \(.value.stats.code) | \(.value.stats.comments) | \(.value.stats.blanks) |\n"
  )
' > code_stats.md

高级用法

1. 配置文件

创建 tokei.toml 或 .tokeirc 文件:

toml 复制代码
# 排除特定路径
exclude = [
    "target/",
    "*.lock",
    "node_modules/",
]

# 自定义语言类型
[[languages]]
name = "Custom"
extensions = ["custom"]

# 输出格式
output = "json"
2. 配合其他工具
bash 复制代码
# 配合 jq 处理 JSON 输出
tokei --output json | jq '.languages.Rust.stats.code'

# 配合 grep 筛选
tokei --files | grep "\.rs$"

# 配合 awk 计算
tokei | awk '/Total/ {print "Total code lines:", $3}'

常见报错与解决方案

问题 1:安装失败

错误信息:

复制代码
error: failed to compile `tokei`
error: could not find crate for `std`

原因:Rust 工具链未正确安装或版本过旧。

解决方案:

bash 复制代码
# 安装 Rust(如果未安装)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 更新 Rust 工具链
rustup update stable

# 验证安装
rustc --version
cargo --version

# 安装 tokei
cargo install tokei

问题 2:运行时权限错误

错误信息:

复制代码
Permission denied: /path/to/directory

原因:没有读取目录的权限。

解决方案:

bash 复制代码
# 检查目录权限
ls -ld /path/to/directory

# 使用 sudo(如果需要)
sudo tokei /path/to/directory

# 或者修改目录权限(谨慎使用)
chmod +r /path/to/directory

问题 3:目录路径解析异常

错误信息:

复制代码
No such file or directory: /path/to/directory

原因:路径不存在或路径格式错误。

解决方案:

bash 复制代码
# 检查路径是否存在
ls -la /path/to/directory

# 使用绝对路径
tokei /home/user/project

# 使用相对路径
cd /home/user/project
tokei .

问题 4:输出格式错误

错误信息:

复制代码
error: invalid value 'xml' for '--output <FORMAT>'

原因:使用了不支持的输出格式。

解决方案:

bash 复制代码
# 查看支持的输出格式
tokei --help | grep -A 5 "output"

# 使用支持的格式
tokei --output json
tokei --output yaml
tokei --output cbor

问题 5:内存不足

错误信息:

复制代码
thread 'main' panicked at 'out of memory'

原因:处理超大代码库时内存不足。

解决方案:

bash 复制代码
# 限制处理的目录深度
tokei --exclude "node_modules/" --exclude "target/"

# 分批处理
tokei src/ > src_stats.txt
tokei tests/ > tests_stats.txt

# 使用更少的线程(如果支持)
# 注意:tokei 可能没有直接控制线程数的选项,但可以通过排除大目录来减少内存使用

问题 6:语言识别错误

错误信息:某些文件被错误识别为其他语言。

原因:文件扩展名不在 tokei 的语言数据库中。

解决方案:

bash 复制代码
# 查看支持的语言
tokei --help | grep -A 50 "Supported languages"

# 使用配置文件指定语言类型
# 在 tokei.toml 中添加:
[[languages]]
name = "Custom"
extensions = ["custom"]

适配开源鸿蒙 PC 端的要点

系统环境差异

1. 包管理器

HarmonyOS PC 使用 HNP(HarmonyOS Native Package)作为包管理格式,而不是传统的 apt、yum 或 brew。

影响:

  • 需要创建 HNP 包配置文件(hnp.json)
  • 安装路径遵循 HNP 规范
  • 包管理命令不同
2. 依赖库

HarmonyOS 使用 musl libc 而不是 glibc,这影响:

  • 链接方式:需要使用静态链接或 musl 兼容的动态链接
  • 系统调用:某些系统调用可能不同
  • 库依赖:需要确保所有依赖都支持 musl
3. 终端交互兼容性

HarmonyOS 终端可能使用不同的:

  • 颜色支持:需要测试颜色输出兼容性
  • 字符编码:确保 UTF-8 支持
  • 终端特性:某些高级特性可能需要适配

Rust 工具链在鸿蒙上的编译适配

1. 目标平台选择

HarmonyOS 使用 aarch64-unknown-linux-musl 作为目标平台:

bash 复制代码
export TARGET=aarch64-unknown-linux-musl

原因:

  • HarmonyOS 基于 Linux 内核
  • 使用 musl libc 而不是 glibc
  • 架构是 aarch64(ARM 64位)
2. 交叉编译配置

需要配置 Rust 工具链使用 HarmonyOS SDK:

bash 复制代码
# 设置工具链环境变量
export CC_aarch64_unknown_linux_musl=${CC}
export CXX_aarch64_unknown_linux_musl=${CXX}
export AR_aarch64_unknown_linux_musl=${AR}
export RANLIB_aarch64_unknown_linux_musl=${RANLIB}
export STRIP_aarch64_unknown_linux_musl=${STRIP}
3. 链接器配置

需要配置 .cargo/config.toml 使用 HarmonyOS 的链接器:

toml 复制代码
[target.aarch64-unknown-linux-musl]
linker = "clang"
rustflags = [
    "-C", "link-arg=--target=aarch64-linux-ohos",
    "-C", "link-arg=--sysroot=${SDK_PATH}/native/sysroot",
    "-C", "link-arg=-fuse-ld=lld",
    "-C", "link-arg=--ld-path=${SDK_PATH}/native/llvm/bin/ld.lld",
]

关键适配要点总结

  1. 目标平台 :使用 aarch64-unknown-linux-musl
  2. 链接器:使用 HarmonyOS SDK 的 LLD
  3. 系统根目录:指定 HarmonyOS SDK 的 sysroot
  4. 包格式:使用 HNP 格式打包
  5. 安装路径:遵循 HNP 规范

鸿蒙适配中的报错解决过程

报错 1:构建系统识别错误

错误信息:

复制代码
make: *** No rule to make target `clean'. Stop.
make: *** No targets specified and no makefile found. Stop.

原因分析 :

tokei 是一个 Rust 项目,使用 Cargo 作为构建系统,而不是 Makefile。原始的构建脚本错误地使用了 make 命令。

解决过程:

  1. 识别构建系统:

    bash 复制代码
    ls -la
    # 发现 Cargo.toml,确认是 Rust 项目
  2. 修改构建脚本:

    • 移除 make clean、make VERBOSE=1、make install 命令
    • 改用 cargo build --release --target ${TARGET}
  3. 配置交叉编译:

    • 设置目标平台为 aarch64-unknown-linux-musl
    • 配置工具链环境变量
    • 创建 .cargo/config.toml

最终解决方案:

bash 复制代码
# 使用 Cargo 构建
cargo build --release --target aarch64-unknown-linux-musl

报错 2:链接器选项不兼容

错误信息:

复制代码
ld: unknown option: --as-needed
clang-15: error: linker command failed with exit code 1

原因分析 :

Rust 默认会添加 -Wl,--as-needed 链接器选项,但 HarmonyOS SDK 使用的 LLD 链接器不支持这个选项。

排查思路:

  1. 检查链接器类型:

    bash 复制代码
    file ${SDK_PATH}/native/llvm/bin/ld.lld
    # 确认是 LLD 链接器
  2. 查看 Rust 传递的参数:

    bash 复制代码
    cargo build --release --target ${TARGET} --verbose 2>&1 | grep "link-arg"
    # 发现 -Wl,--as-needed 选项
  3. 尝试禁用选项:

    • 在 rustflags 中添加 -Wl,--no-as-needed(无效)
    • Rust 仍然会添加 --as-needed

解决方案:

创建链接器包装脚本,过滤掉不支持的选项:

bash 复制代码
# 创建链接器包装脚本
LINKER_WRAPPER=$(mktemp)
cat > "${LINKER_WRAPPER}" << 'EOF'
#!/bin/bash
ARGS=()
for arg in "$@"; do
    case "$arg" in
        *--as-needed*)
            # 跳过不支持的选项
            ;;
        *)
            ARGS+=("$arg")
            ;;
    esac
done
exec "${CC}" "${ARGS[@]}"
EOF
chmod +x "${LINKER_WRAPPER}"

# 在 .cargo/config.toml 中使用包装脚本
linker = "${LINKER_WRAPPER}"

关键代码:

bash 复制代码
# 过滤掉 --as-needed 相关选项
case "$arg" in
    *--as-needed*)
        # 跳过
        ;;
    -Wl,--as-needed)
        # 跳过
        ;;
    -Wl,--no-as-needed)
        # 也跳过(LLD 不支持)
        ;;
    *)
        ARGS+=("$arg")
        ;;
esac

报错 3:安装目录不存在

错误信息:

复制代码
cp: directory /Users/jianguo/HarmonyOSPC/build/data/service/hnp//tokei.org/tokei_13.0.1 does not exist
Error: Failed to copy hnp.json

原因分析 :

安装目录不存在,需要先创建。

解决方案:

bash 复制代码
# 创建安装目录
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/bin
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/man/man1

报错 4:目标平台配置错误

错误信息:

复制代码
error[E0463]: can't find crate for `std`
= note: the `aarch64-apple-darwin` target may not be installed

原因分析 :

Rust 尝试为当前主机平台(macOS)编译,而不是为目标平台(HarmonyOS)编译。

解决过程:

  1. 检查目标平台:

    bash 复制代码
    rustup target list | grep aarch64
    # 确认 aarch64-unknown-linux-musl 存在
  2. 安装目标平台:

    bash 复制代码
    rustup target add aarch64-unknown-linux-musl
  3. 确保使用正确的目标:

    bash 复制代码
    cargo build --release --target aarch64-unknown-linux-musl

最终解决方案:

bash 复制代码
export TARGET=aarch64-unknown-linux-musl
cargo build --release --target ${TARGET}

适配过程中的关键决策

  1. 使用链接器包装脚本:解决 LLD 不支持的选项问题
  2. 静态链接优先:减少运行时依赖
  3. 遵循 HNP 规范:确保包格式正确
  4. 错误处理完善:添加详细的错误检查和提示

构建脚本详解

build_ohos.sh 完整代码

bash 复制代码
export TREE_INSTALL_HNP_PATH=${HNP_PUBLIC_PATH}/tokei.org/tokei_13.0.1

# 创建安装目录
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/bin
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/man/man1

# 设置 Rust 交叉编译目标
export CARGO_TARGET_DIR=${PWD}/target
export TARGET=aarch64-unknown-linux-musl

# 配置 cargo 使用 HarmonyOS 工具链
export CC_aarch64_unknown_linux_musl=${CC}
export CXX_aarch64_unknown_linux_musl=${CXX}
export AR_aarch64_unknown_linux_musl=${AR}
export RANLIB_aarch64_unknown_linux_musl=${RANLIB}
export STRIP_aarch64_unknown_linux_musl=${STRIP}

# 设置链接器
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=${CC}

# 创建 .cargo 配置目录
mkdir -p .cargo

# 创建链接器包装脚本
LINKER_WRAPPER=$(mktemp)
cat > "${LINKER_WRAPPER}" << LINKER_EOF
#!/bin/bash
ARGS=()
for arg in "\$@"; do
    case "\$arg" in
        *--as-needed*)
            ;;
        -Wl,--as-needed)
            ;;
        -Wl,--no-as-needed)
            ;;
        *)
            ARGS+=("\$arg")
            ;;
    esac
done
exec "${CC}" "\${ARGS[@]}"
LINKER_EOF
chmod +x "${LINKER_WRAPPER}"

# 动态生成 .cargo/config.toml
SDK_PATH=${OHOS_SDK:-/Users/jianguo/Desktop/ohosdk}
cat > .cargo/config.toml << EOF
[target.aarch64-unknown-linux-musl]
linker = "${LINKER_WRAPPER}"
rustflags = [
    "-C", "link-arg=--target=aarch64-linux-ohos",
    "-C", "link-arg=--sysroot=${SDK_PATH}/native/sysroot",
    "-C", "link-arg=-fuse-ld=lld",
    "-C", "link-arg=--ld-path=${SDK_PATH}/native/llvm/bin/ld.lld",
]
EOF

# 构建 release 版本
cargo build --release --target ${TARGET} --verbose

# 安装二进制文件
cp ${CARGO_TARGET_DIR}/${TARGET}/release/tokei ${TREE_INSTALL_HNP_PATH}/usr/bin/tokei
chmod +x ${TREE_INSTALL_HNP_PATH}/usr/bin/tokei

# 复制 man pages(如果存在)
if [ -f manual/tokei.1 ]; then
    cp manual/tokei.1 ${TREE_INSTALL_HNP_PATH}/usr/share/man/man1/
fi

# 复制 hnp.json 并打包
cp hnp.json ${TREE_INSTALL_HNP_PATH}/
pushd ${TREE_INSTALL_HNP_PATH}/../
    ${HNP_TOOL} pack -i ${TREE_INSTALL_HNP_PATH} -o ${ARCHIVE_PATH}/
    tar -zvcf ${ARCHIVE_PATH}/ohos_tokei_13.0.1.tar.gz tokei_13.0.1/
popd

脚本关键点解析

1. 链接器包装脚本

作用 :过滤掉 LLD 不支持的 --as-needed 选项。

实现:

  • 遍历所有链接器参数
  • 过滤掉包含 --as-needed 的参数
  • 将剩余参数传递给实际链接器
2. Cargo 配置

.cargo/config.toml:

  • 指定链接器为包装脚本
  • 配置 HarmonyOS SDK 路径
  • 设置链接器参数
3. 构建流程
  1. 清理 :cargo clean
  2. 构建 :cargo build --release --target ${TARGET}
  3. 安装:复制二进制文件和文档
  4. 打包:创建 HNP 包和 tar 归档

HNP 包配置

hnp.json

json 复制代码
{
    "type": "hnp-config",
    "name": "tokei",
    "version": "13.0.1",
    "install": {}
}

安装目录结构

复制代码
tokei_13.0.1/
├── usr/
│   ├── bin/
│   │   └── tokei              # 可执行文件
│   └── share/
│       └── man/
│           └── man1/
│               └── tokei.1    # 用户手册(如果存在)
└── hnp.json                   # HNP 包配置

构建结果

构建成功后,会生成以下文件:

  1. HNP 包 :tokei.org_tokei_13.0.1.hnp

    • HarmonyOS 原生包格式
    • 可以直接安装到 HarmonyOS 设备
  2. Tar 归档 :ohos_tokei_13.0.1.tar.gz

    • 压缩的 tar 归档
    • 包含完整的安装目录结构

构建输出示例

复制代码
==========================================
Build completed successfully!
==========================================
HNP Package: /path/to/archive/tokei.org_tokei_13.0.1.hnp
Tar Archive: /path/to/archive/ohos_tokei_13.0.1.tar.gz
Installation Path: /path/to/data/service/hnp/tokei.org/tokei_13.0.1
==========================================

仓库地址与安装方式

仓库地址

HarmonyOS 适配版本:

安装方式

Linux(通用)

使用 Cargo:

bash 复制代码
cargo install tokei

使用包管理器:

bash 复制代码
# Arch Linux
sudo pacman -S tokei

# Fedora
sudo dnf install tokei

# Alpine Linux
apk add tokei

# Debian/Ubuntu(如果可用)
sudo apt install tokei

从源码编译:

bash 复制代码
git clone https://github.com/XAMPPRocky/tokei.git
cd tokei
cargo build --release
sudo cp target/release/tokei /usr/local/bin/
macOS

使用 Homebrew:

bash 复制代码
brew install tokei

使用 MacPorts:

bash 复制代码
sudo port install tokei

使用 Cargo:

bash 复制代码
cargo install tokei
Windows

使用 Winget:

bash 复制代码
winget install XAMPPRocky.tokei

使用 Scoop:

bash 复制代码
scoop install tokei

使用 Cargo:

bash 复制代码
cargo install tokei
开源鸿蒙 PC

使用 HNP 包:

bash 复制代码
# 安装 HNP 包
hnp install tokei.org_tokei_13.0.1.hnp

# 或使用 tar 归档
tar -xzf ohos_tokei_13.0.1.tar.gz
# 手动复制到系统路径

从源码交叉编译:

bash 复制代码
# 1. 克隆仓库
git clone https://gitcode.com/nutpi/tokei.git
cd tokei
git checkout 13.0.1_ohos

# 2. 设置 HarmonyOS SDK 路径
export OHOS_SDK=/path/to/ohosdk

# 3. 运行构建脚本
./build_ohos.sh

# 4. 安装生成的 HNP 包
hnp install tokei.org_tokei_13.0.1.hnp

验证安装

bash 复制代码
# 检查版本
tokei --version

# 测试基本功能
tokei

# 查看帮助
tokei --help

总结

适配要点

  1. 构建系统识别:Rust 项目使用 Cargo,不是 Makefile
  2. 目标平台选择 :使用 aarch64-unknown-linux-musl
  3. 链接器兼容性:使用包装脚本过滤不支持的选项
  4. 工具链配置:正确配置交叉编译环境变量
  5. 包格式:遵循 HNP 规范

关键决策

  1. 链接器包装脚本:解决 LLD 不支持的选项问题
  2. 动态配置生成 :根据 SDK 路径生成 .cargo/config.toml
  3. 错误处理:添加详细的错误检查和提示

优势

  • 零运行时依赖:单一可执行文件,部署简单
  • 高性能:Rust 编译,运行速度快
  • 功能强大:支持 150+ 种编程语言
  • 易于集成:可以轻松集成到 CI/CD 流程中

适用场景

  • 代码统计和分析
  • 项目文档生成
  • CI/CD 集成
  • 代码质量监控
  • 项目对比分析

FAQ

Q1: tokei 和 cloc 有什么区别?

A: tokei 是 cloc 的现代化替代品,主要区别:

  • tokei 速度更快(Rust 编写)
  • tokei 支持更多语言(150+)
  • tokei 输出格式更多(JSON、YAML、CBOR)
  • tokei 可以作为库使用
  • tokei 单一二进制文件,无需依赖

Q2: 为什么选择 Rust 开发?

A: Rust 的优势:

  • 内存安全,避免常见错误
  • 性能接近 C/C++
  • 单一可执行文件,易于分发
  • 跨平台支持好
  • 现代语言特性丰富

Q3: 如何提高统计速度?

A:

  • 排除不需要的目录(--exclude)
  • 使用多线程(默认启用)
  • 只统计特定语言(--type)
  • 限制目录深度

Q4: 如何在 HarmonyOS 上使用 tokei?

A:

  1. 安装 HNP 包:hnp install tokei.org_tokei_13.0.1.hnp
  2. 或从源码交叉编译
  3. 使用方式与 Linux 相同

Q5: 链接器包装脚本是必需的吗?

A: 是的,因为:

  • HarmonyOS SDK 使用 LLD 链接器
  • LLD 不支持 --as-needed 选项
  • Rust 默认会添加这个选项
  • 包装脚本可以过滤掉不支持的选项

Q6: 如何自定义输出格式?

A:

bash 复制代码
# JSON 格式
tokei --output json

# YAML 格式
tokei --output yaml

# CBOR 格式
tokei --output cbor

Q7: 可以只统计特定语言吗?

A: 可以:

bash 复制代码
# 只统计 Rust
tokei --type Rust

# 只统计多种语言
tokei --type Rust --type Python

Q8: JSON 输出格式是什么?

A: JSON 输出是一个对象,包含:

  • languages: 各语言的统计信息
  • total: 总计信息
  • 每个语言包含:files、lines、code、comments、blanks

相关链接


相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码4 天前
别再前后端各写一套表单校验了
java·后端
youyin4 天前
HarmonyOS ArkUI 组件与自定义组件零基础:从搭页面到组件化开发
华为·harmonyos
大勇前进4 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu4 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile4 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白804 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端
二月龙4 天前
PHP 接口返回统一响应封装,让前后端对接更省心
后端