代码静态统计工具
scc
地址位于:https://github.com/boyter/scc
安装方法:
sudo snap install scc # Ubuntu
brew install scc # Mac
scc 总体社区比较活跃,有 7.2K star!
SCC(Source Code Counter)是一个快速且高效的命令行工具,用于统计项目中各个文件的代码行数、注释行数和空行数。与其他代码行统计工具相比,SCC 通过并行化处理使得在大规模项目中的统计变得更加高效。它支持多种编程语言,包括 C、C++、Python、Java、Go 等,能够生成详细的统计报告,方便开发者评估代码库的复杂性和大小。此外,SCC 提供了灵活的输出格式支持,包括 JSON、CSV、YAML 等,便于进一步的数据分析或集成到其他工具中。它是分析代码仓库、评估代码质量和监控项目进展的理想工具。
使用方法:
# 统计当前目录代码行数并输出表格格式
scc . # 统计当前目录及子目录下所有文件的代码行数
# 统计代码并显示每个文件的详细信息
scc --by-file . # 显示每个文件的行数、注释行数、空行数等详细信息
# 输出为 JSON 格式,便于进一步分析
scc --format json . # 输出结果为 JSON 格式
# 排除特定目录,统计其他文件
scc --exclude-dir .git --exclude-dir node_modules . # 排除 `.git` 和 `node_modules` 目录,不统计其中的文件
# 计算并显示 COCOMO 项目成本估算
scc --cocomo-project-type organic . # 计算并显示使用有机模型的 COCOMO 估算值
# 启用宽输出,显示更多统计信息
scc --wide . # 显示更多统计信息,如代码复杂度等
# 排除特定文件扩展名
scc --exclude-ext md,html . # 排除 `.md` 和 `.html` 文件,不进行统计
# 输出多种格式报告:JSON 格式到文件,表格格式到终端
scc --format-multi "json:file.json,tabular:stdout" . # 同时输出 JSON 格式到文件,表格格式到终端
# 启用调试模式
scc --debug . # 显示调试输出,查看处理过程的详细日志
# 使用正则表达式排除特定文件和目录
scc -M "test/*" . # 排除 `test/` 目录下的文件
scc --format json . # 输出为 JSON 格式
scc --format csv . # 输出为 CSV 格式
scc --format tabular . # 输出为表格格式(默认)
scc --large-line-count 10000 . # 只统计小于 10000 行的文件
scc --currency-symbol "€" . # 设置货币符号
scc --avg-wage 70000 . # 设置模拟工资
cloc
cloc(Count Lines of Code)是一个开源工具,用于统计源代码的行数。它可以区分代码行、注释行和空白行,并支持多种编程语言。cloc 常用于项目的规模分析、工作量估算或代码比较,支持命令行操作,适合开发者快速查看代码结构。和 Scc 比较相似:
cloc --json . # 输出为 JSON 格式
# 按文件统计
cloc --by-file . # 显示每个文件的详细统计信息
# 输出为 CSV 格式
cloc --csv . # 输出为 CSV 格式
# 输出为 Markdown 格式
cloc --md . # 输出为 Markdown 格式
# 排除特定目录
cloc --exclude-dir node_modules,.git . # 排除 `node_modules` 和 `.git` 目录
# 排除特定文件扩展名
cloc --exclude-ext md,html . # 排除 `.md` 和 `.html` 文件
# 排除特定语言
cloc --exclude-lang JavaScript,Python . # 排除 JavaScript 和 Python 文件
# 排除文件或目录列表
cloc --exclude-list-file exclude_list.txt . # 使用文件中的排除列表
# 启用 COCOMO 项目成本估算
cloc --cocomo-project-type organic . # 使用有机模型的 COCOMO 估算
# 禁用 COCOMO 计算
cloc --no-cocomo . # 禁用 COCOMO 计算
# 禁用复杂度计算
cloc --no-complexity . # 不计算代码复杂度
# 按列排序输出
cloc --sort lines . # 按代码行数排序输出
# 统计特定文件类型
cloc --include-ext go,python . # 仅统计 `.go` 和 `.py` 文件
# 跳过某些文件
cloc --skip-archive .zip,.tar . # 跳过 `.zip` 和 `.tar` 文件
# 设置最大文件大小
cloc --max-file-size=50 . # 跳过大于 50 MB 的文件
# 强制使用 Git 提交
cloc --git <commit_hash> . # 使用 Git 提交哈希进行统计
# 排除文件内容
cloc --exclude-content="TODO" . # 排除文件中包含 "TODO" 的内容
# 忽略大小写
cloc --ignore-case . # 忽略文件名大小写,适用于大小写敏感的系统
# 强制处理所有脚本语言
cloc --script-lang=Python,.py . # 强制将脚本语言 `.py` 文件处理为 Python
# 跟踪符号链接
cloc --follow-links . # 追踪符号链接
# 处理二进制文件
cloc --read-binary-files . # 处理二进制文件(不推荐,通常仅处理文本文件)
# 将报告保存为文件
cloc --report-file=report.txt . # 将结果保存到 `report.txt` 文件
# 启用调试模式
cloc --debug . # 启用调试输出
# 生成 SQL 格式报告
cloc --sql=report.sql . # 输出为 SQL 格式
lizard
==默认可以按函数统计、某些时候可以发挥作用!==并能根据设定生成警告:
# 查看帮助信息
lizard --help # 显示所有可用的选项和命令行参数
# 查看版本信息
lizard --version # 输出当前安装的 lizard 版本信息
# 统计并输出所有语言
lizard . # 统计当前目录和子目录中所有语言的代码复杂度
# 统计并输出特定语言 (如 C++ 和 Java)
lizard -l cpp -l java . # 仅统计 C++ 和 Java 文件的代码复杂度
# 输出为 CSV 格式
lizard --csv . # 输出为 CSV 格式,适合数据分析
# 输出为 HTML 格式
lizard --html . # 输出为 HTML 格式,适合生成报告
# 设置 cyclomatic complexity number 的警告阈值
lizard -C 20 . # 如果函数的 Cyclomatic Complexity (CCN) 超过 20,则会生成警告
# 设置最大函数长度的警告阈值
lizard -L 500 . # 如果函数长度超过 500 行,则会生成警告
# 设置最大参数个数的警告阈值
lizard -a 10 . # 如果函数参数个数超过 10,则会生成警告
# 显示仅警告信息 (如 Cyclomatic Complexity 警告)
lizard -w . # 仅显示警告,不输出详细统计信息
# 生成 XML 格式的报告
lizard -X . # 输出为 XML 格式,适合 Jenkins 集成
# 排除特定文件或目录
lizard -x "./folder/*" . # 排除 `./folder/` 目录中的所有文件
# 使用多个线程加速分析
lizard -t 4 . # 使用 4 个线程来加速分析
# 计算修改过的 cyclomatic complexity 数量
lizard -m . # 计算修改过的 cyclomatic complexity,多个 case 计为 1
# 扩展功能:例如忽略 assert 中的代码
lizard -E IgnoreAssert . # 忽略 assert 语句中的代码
# 根据字段排序报告
lizard -s cyclomatic_complexity . # 按 Cyclomatic Complexity 排序报告
# 设置阈值,生成超出阈值的警告
lizard -T cyclomatic_complexity:10 . # 设置 Cyclomatic Complexity 的阈值为 10,超过此值的函数会生成警告
# 使用白名单文件来过滤报告
lizard --whitelist ./whitelizard.txt . # 使用白名单过滤文件
tokei
Tokei 是一个快速的代码行统计工具,支持多种语言和格式,轻量级(功能不丰富!)。以下是 Tokei 的常用命令和功能介绍:
安装方法:
sudo apt update
sudo apt install cargo -y # 安装 Rust 开发环境
cargo install tokei # 使用 cargo 安装 tokei
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
使用方法:
tokei -l # 显示支持的语言
tokei -o json . # 输出json格式
tokei -e "tests/*" . # 排除特定文件夹
sloccount
评论