Tokei 是一个使用 Rust 语言开发的显示代码统计信息的程序。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,它将是黑色和白色。
案例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| # 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
1
2
3
4
5
| # Homebrew
brew install tokei
# MacPorts
sudo port selfupdate
sudo port install tokei
|
Windows
二进制文件下载
https://github.com/XAMPPRocky/tokei/releases
编译安装
1
| cargo install --git https://github.com/XAMPPRocky/tokei.git tokei
|
配置
Tokei 有一个配置文件,允许您更改默认行为。该文件可以命名为 tokei.toml 或 .tokeirc。当前版本的 tokei 在三个不同的地方查找此文件。当前目录、主目录和配置目录。
使用
基本用法
这是使用 tokei 的基本方法。它将报告 ./foo 和所有子文件夹中的代码。
多文件夹
要让 tokei 在同一个调用中报告多个文件夹,只需添加一个逗号,或在另一个路径后面添加一个空格。
1
| tokei ./foo ./bar ./baz
|
1
| tokei ./foo, ./bar, ./baz
|
排除文件夹
Tokei 将遵循所有 .gitignore 和 .ignore 文件,您可以使用 --exclude
选项排除任何其他文件。--exclude
选项与 .gitignore 具有相同的语义。
1
| tokei ./foo --exclude *.rs
|
要排除的路径也可以在 .tokeignore 文件中列出,使用与 .gitignore 文件相同的语法。
排序输出
默认情况下,Tokei 按语言名称的字母顺序排序,但是使用 –sort 选项 tokei 也可以按任何列排序。
1
2
3
| # blanks, code, comments, lines
tokei ./foo --sort code
|
输出文件统计信息
默认情况下,tokei 只输出语言总数,并且使用 --files
选项 tokei 也可以输出单个文件的统计信息。
输出为不同格式
Tokei 通常输出为一种为终端设计的良好的可读格式。还使用了 --output
选项,可以使用各种其他格式,这些格式对于将数据引入另一个程序更有用。
注意: 这个版本的 tokei 编译时没有任何序列化格式,要启用序列化,请使用 features 标志重新安装 tokei。
1
2
3
4
5
6
7
8
| 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
1
| tokei ./foo --output json
|
以存储格式读取
Tokei 还可以将先前结果中添加的输出格式接收到当前运行中。Tokei 可以获取文件路径、作为选项值传递的格式,也可以从 stdin 获取。
1
| tokei ./foo --input ./stats.json
|
选项:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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 <columns> Sets a strict column width of the output, only available for terminal output.
-e, --exclude <exclude>... Ignore all files & directories matching the pattern.
-i, --input <file_input> Gives statistics from a previous tokei run. Can be given a file path, or "stdin" to
read from stdin.
-o, --output <output> Outputs Tokei in a specific format. Compile with additional features for more format
support. [possible values: cbor, json, yaml]
-s, --sort <sort> Sort languages based on column [possible values: files, lines, blanks, code, comments]
-t, --type <types> Filters output by language type, separated by a comma. i.e. -t=Rust,Markdown
ARGS:
<input>... The path(s) to the file or directory to be counted.
|
支持编程语言:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
| 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
|