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)作为包管理格式,而不是传统的 aptyumbrew

影响

  • 需要创建 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 cleanmake VERBOSE=1make 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: 总计信息
  • 每个语言包含:fileslinescodecommentsblanks

相关链接


相关推荐
m0_685535083 小时前
华为光学工程师笔试真题(含答案与深度解析)
华为·光学·光学设计·光学工程·镜头设计
qq_12498707533 小时前
基于springboot的建筑业数据管理系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·毕业设计
lqj_本人3 小时前
鸿蒙原生与Qt混合开发:性能优化与资源管理
qt·harmonyos
lqj_本人4 小时前
鸿蒙Qt字体实战:消灭“豆腐块“乱码与自定义字体加载
qt·华为·harmonyos
大侠课堂4 小时前
海康大华大疆华为中兴追觅经典面试题200道完整版
华为
IT_陈寒4 小时前
Vite 5.0实战:10个你可能不知道的性能优化技巧与插件生态深度解析
前端·人工智能·后端
z***3354 小时前
SQL Server2022版+SSMS安装教程(保姆级)
后端·python·flask
爱笑的眼睛114 小时前
深入探索HarmonyOS中RichText组件的HTML渲染机制
华为·harmonyos
IT闫4 小时前
figlet 在鸿蒙PC上的构建与适配
华为·harmonyos