# Tokei 显示代码统计数据的程序 Tokei 是一个使用 Rust 语言开发的显示代码统计信息的程序。Tokei 将显示文件的数量、这些文件中的总行数以及按语言分组的代码、注释和空格。 [https://github.com/XAMPPRocky/tokei](https://github.com/XAMPPRocky/tokei) ## 特征 Tokei 非常快,并且能够在几秒钟内计算数百万行代码。 Tokei 是准确的,Tokei 正确处理多行评论,嵌套评论,并且不计算字符串中的注释。提供准确的代码统计信息。 Tokei 具有大量的语言,支持150多种语言及其各种语言。 Tokei 可以以多种格式(CBOR,JSON,YAML)输出,从而使 Tokei 的输出易于存储和重复使用。这些也可以在将上一个运行的统计数据与另一组组合结合的托基中重复使用。 Tokei 可在 Mac,Linux 和 Windows 上使用。 Tokei 也是一个库,允许您轻松地将其与其他项目集成。 Tokei 带来和没有颜色。将 ENV 变量 no\_color 设置为 1,它将是黑色和白色。 * * * ## 案例 ![](https://oss-cf.skiy.net/zzzzy/2023/02/2022-07-22_18-49.png) ```bash ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Language Files Lines Code Comments Blanks ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BASH 4 49 30 10 9 JSON 1 1332 1332 0 0 Shell 1 49 38 1 10 TOML 2 77 64 4 9 ─────────────────────────────────────────────────────────────────────────────── Markdown 5 1355 0 1074 281 |- JSON 1 41 41 0 0 |- Rust 2 53 42 6 5 |- Shell 1 22 18 0 4 (Total) 1471 101 1080 290 ─────────────────────────────────────────────────────────────────────────────── Rust 19 3416 2840 116 460 |- Markdown 12 351 5 295 51 (Total) 3767 2845 411 511 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Total 32 6745 4410 1506 829 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` * * * ## 安装 **Linux** ```bash # Alpine Linux (since 3.13) apk add tokei # Arch Linux pacman -S tokei # Cargo cargo install tokei # Conda conda install -c conda-forge tokei # Fedora sudo dnf install tokei # FreeBSD pkg install tokei # NetBSD pkgin install tokei # Nix/NixOS nix-env -i tokei # OpenSUSE sudo zypper install tokei ``` **MacOS** ```bash # Homebrew brew install tokei # MacPorts sudo port selfupdate sudo port install tokei ``` **Windows** ```bash scoop install tokei ``` **二进制文件下载** [https://github.com/XAMPPRocky/tokei/releases](https://github.com/XAMPPRocky/tokei/releases) **编译安装** ```bash cargo install --git https://github.com/XAMPPRocky/tokei.git tokei ``` * * * ### 配置 Tokei 有一个配置文件,允许您更改默认行为。该文件可以命名为 tokei.toml 或 .tokeirc。当前版本的 tokei 在三个不同的地方查找此文件。当前目录、主目录和配置目录。 * * * ### 使用 **基本用法** 这是使用 tokei 的基本方法。它将报告 ./foo 和所有子文件夹中的代码。 ```bash tokei ./foo ``` **多文件夹** 要让 tokei 在同一个调用中报告多个文件夹,只需添加一个逗号,或在另一个路径后面添加一个空格。 ```bash tokei ./foo ./bar ./baz ``` ```bash tokei ./foo, ./bar, ./baz ``` **排除文件夹** Tokei 将遵循所有 .gitignore 和 .ignore 文件,您可以使用 `--exclude` 选项排除任何其他文件。`--exclude` 选项与 .gitignore 具有相同的语义。 ```bash tokei ./foo --exclude *.rs ``` 要排除的路径也可以在 .tokeignore 文件中列出,使用与 .gitignore 文件相同的语法。 **排序输出** 默认情况下,Tokei 按语言名称的字母顺序排序,但是使用 --sort 选项 tokei 也可以按任何列排序。 ```bash # blanks, code, comments, lines tokei ./foo --sort code ``` **输出文件统计信息** 默认情况下,tokei 只输出语言总数,并且使用 `--files` 选项 tokei 也可以输出单个文件的统计信息。 ```bash tokei ./foo --files ``` **输出为不同格式** Tokei 通常输出为一种为终端设计的良好的可读格式。还使用了 `--output` 选项,可以使用各种其他格式,这些格式对于将数据引入另一个程序更有用。 **注意:** 这个版本的 tokei 编译时没有任何序列化格式,要启用序列化,请使用 features 标志重新安装 tokei。 ```bash ALL: cargo install tokei --features all CBOR: cargo install tokei --features cbor YAML: cargo install tokei --features yaml ``` **当前支持的格式** **JSON**: `--output json` **YAML**: `--output yaml` **CBOR**: `--output cbor` ```bash tokei ./foo --output json ``` **以存储格式读取** Tokei 还可以将先前结果中添加的输出格式接收到当前运行中。Tokei 可以获取文件路径、作为选项值传递的格式,也可以从 stdin 获取。 ```bash tokei ./foo --input ./stats.json ``` * * * **选项:** ```bash USAGE: tokei [FLAGS] [OPTIONS] [--] [input]... FLAGS: -f, --files Will print out statistics on individual files. -h, --help Prints help information --hidden Count hidden files. -l, --languages Prints out supported languages and their extensions. --no-ignore Don't respect ignore files (.gitignore, .ignore, etc.). This implies --no-ignore-parent, --no-ignore-dot, and --no-ignore-vcs. --no-ignore-dot Don't respect .ignore and .tokeignore files, including those in parent directories. --no-ignore-parent Don't respect ignore files (.gitignore, .ignore, etc.) in parent directories. --no-ignore-vcs Don't respect VCS ignore files (.gitignore, .hgignore, etc.), including those in parent directories. -V, --version Prints version information -v, --verbose Set log output level: 1: to show unknown file extensions, 2: reserved for future debugging, 3: enable file level trace. Not recommended on multiple files OPTIONS: -c, --columns Sets a strict column width of the output, only available for terminal output. -e, --exclude ... Ignore all files & directories matching the pattern. -i, --input Gives statistics from a previous tokei run. Can be given a file path, or "stdin" to read from stdin. -o, --output Outputs Tokei in a specific format. Compile with additional features for more format support. [possible values: cbor, json, yaml] -s, --sort Sort languages based on column [possible values: files, lines, blanks, code, comments] -t, --type Filters output by language type, separated by a comma. i.e. -t=Rust,Markdown ARGS: ... The path(s) to the file or directory to be counted. ``` * * * **支持编程语言:** ```bash Abap ActionScript Ada Agda Alex Alloy Asn1 Asp AspNet Assembly AssemblyGAS ATS Autoconf AutoHotKey Automake AWK Bash Batch BrightScript C Cabal Cassius Ceylon CHeader Clojure ClojureC ClojureScript CMake Cobol CoffeeScript Cogent ColdFusion ColdFusionScript Coq Cpp CppHeader Crystal CSharp CShell Css D DAML Dart DeviceTree Dhall Dockerfile DotNetResource DreamMaker Dust Edn Elisp Elixir Elm Elvish EmacsDevEnv Emojicode Erlang Factor FEN Fish FlatBuffers Forth FortranLegacy FortranModern FreeMarker FSharp Fstar GDB GdScript Gherkin Gleam Glsl Go Graphql Groovy Gwion Hamlet Handlebars Happy Haskell Haxe Hcl Hex Hlsl HolyC Html Idris Ini IntelHex Isabelle Jai Java JavaScript Json Jsx Julia Julius KakouneScript Kotlin Lean Less LinkerScript Liquid Lisp LLVM Logtalk Lua Lucius Madlang Makefile Markdown Meson Mint Mlatu ModuleDef MoonScript MsBuild Mustache Nim Nix NotQuitePerl ObjectiveC ObjectiveCpp OCaml Odin Org Oz Pascal Perl Perl6 Pest Php Polly Pony PostCss PowerShell Processing Prolog Protobuf PSL PureScript Python Qcl Qml R Racket Rakefile Razor Renpy ReStructuredText RON RPMSpecfile Ruby RubyHtml Rust Sass Scala Scheme Scons Sh Sml Solidity SpecmanE Spice Sql SRecode Stratego Svelte Svg Swift Swig SystemVerilog Tcl Tex Text Thrift Toml Tsx Twig TypeScript UnrealDeveloperMarkdown UnrealPlugin UnrealProject UnrealScript UnrealShader UnrealShaderHeader UrWeb UrWebProject Vala VB6 VBScript Velocity Verilog VerilogArgsFile Vhdl VimScript VisualBasic VisualStudioProject VisualStudioSolution Vue WebAssembly Wolfram Xaml XcodeConfig Xml XSL Xtend Yaml Zig Zsh ```