8 个版本 (4 个重大更新)
使用旧的 Rust 2015
0.5.0 | 2018年8月23日 |
---|---|
0.4.1 | 2017年10月15日 |
0.3.4 | 2016年11月4日 |
0.3.3 | 2016年10月28日 |
0.1.0 | 2016年10月17日 |
在 文本处理 类别中排名第 469
每月下载量 219 次
在 2 个 crate 中使用
70KB
1K SLoC
2018-03-08: 我看到很多星星突然出现,认为我应该提到这一点,tokei 更加智能和准确,所以请查看它并看看是否有任何意外的差异(主要为了您的利益,但如果有的话,请告诉我)。Tokei 的链接在下面,但它也是 rust,所以只需 cargo install tokei
即可。此外,这些基准测试相当过时了。我怀疑 cloc 没有改变,但 tokei 可能有所变化。
loc
是一个用于统计代码行数的工具。它是 cloc 的 rust 实现,但速度超过 100 倍。还有一个名为 tokei 的 rust 代码统计工具,loc 的速度比 tokei 快 2-10 倍,具体取决于要统计的文件数量。
我可以用 loc 在不到 7 秒的时间内统计我的 400k 文件 src
目录(感谢 npm),而 tokei 需要 1m14s,我甚至不愿意尝试使用 cloc。
仅统计 dragonflybsd 代码库 (~9 百万行)
- loc: 1.09 秒
- tokei: 5.3 秒
- cloc: 1 分钟 50 秒
安装
在 发布页面 上有可用的二进制文件,这要归功于神奇的 rust-everywhere 项目和 travisci。对于熟悉 Rust 的人来说,可以使用 cargo install loc
安装。如果您想安装 Rust/Cargo,这可能是最简单的方式:[https://www.rustup.rs/](https://www.rustup.rs/).
Windows
loc
现在应该在 Windows 上编译,但您也可以使用 Linux 模拟在 Windows 上运行它
您可以在Windows 10周年更新版本14393或更高版本上使用Windows子系统for Linux来运行
loc
。只需从发行页面下载Linux发行版,然后使用WSL兼容的路径(例如,使用/mnt/c/Users/Foo/Repo/
而不是C:\Users\Foo\Repo
)在bash
中运行它。
用法
默认情况下,loc
将统计目标目录中的代码行数
$ loc
--------------------------------------------------------------------------------
Language Files Lines Blank Comment Code
--------------------------------------------------------------------------------
Lua 2 387088 24193 193544 169351
Rust 4 1172 111 31 1030
C 4 700 75 155 470
Markdown 2 249 39 0 210
Bourne Shell 4 228 41 27 160
Ada 2 53 12 9 32
Toml 1 26 4 2 20
Gherkin 1 12 2 2 8
OCaml 1 13 4 6 3
Ruby 1 4 0 2 2
Handlebars 1 4 0 2 2
--------------------------------------------------------------------------------
Total 23 389549 24481 193780 171288
--------------------------------------------------------------------------------
您也可以传递一个或多个目标供它检查
$ loc ci benches
--------------------------------------------------------------------------------
Language Files Lines Blank Comment Code
--------------------------------------------------------------------------------
Bourne Shell 4 228 41 27 160
Rust 1 17 4 0 13
--------------------------------------------------------------------------------
Total 5 245 45 27 173
--------------------------------------------------------------------------------
要查看每个解析文件的统计信息,请传递--files
标志
$ loc --files src
--------------------------------------------------------------------------------
Language Files Lines Blank Comment Code
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Rust 2 1028 88 29 911
--------------------------------------------------------------------------------
|src/lib.rs 677 54 19 604
|src/main.rs 351 34 10 307
默认情况下,列将按计数的代码降序排序。您可以使用--sort
标志选择不同的列进行排序
$ loc --files --sort Comment ci
--------------------------------------------------------------------------------
Language Files Lines Blank Comment Code
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Bourne Shell 4 228 41 27 160
--------------------------------------------------------------------------------
|ci/before_deploy.sh 68 15 13 40
|ci/install.sh 60 13 6 41
|ci/script.sh 41 8 8 25
|ci/utils.sh 59 5 0 54
loc
也可以使用正则表达式来匹配和/或排除文件。
$ loc --include 'count'
--------------------------------------------------------------------------------
Language Files Lines Blank Comment Code
--------------------------------------------------------------------------------
Rust 2 144 23 2 119
--------------------------------------------------------------------------------
Total 2 144 23 2 119
loc --exclude 'sh$'
--------------------------------------------------------------------------------
Language Files Lines Blank Comment Code
--------------------------------------------------------------------------------
Lua 2 387088 24193 193544 169351
Rust 4 1172 111 31 1030
C 4 700 75 155 470
Markdown 2 275 38 0 237
Ada 2 53 12 9 32
Toml 1 26 4 2 20
Gherkin 1 12 2 2 8
OCaml 1 13 4 6 3
Handlebars 1 4 0 2 2
Ruby 1 4 0 2 2
--------------------------------------------------------------------------------
Total 19 389347 24439 193753 171155
--------------------------------------------------------------------------------
已知问题
Fortran有规则要求注释必须从行的第一个字符开始。我只检查它是否是行的第一个非空白字符。我不知道这在真实代码中有多频繁。我想不会很频繁。
字符串字面量内的注释:如果你的代码有类似这样
x = "/* I haven't slept \
for 10 days \
because that would be too long \
*/";
loc正确地计数了第一行和最后一行,但中间的行将被错误地计为注释。
忽略和隐藏文件
默认情况下,loc会尊重.gitignore/.ignore文件,并忽略隐藏的文件和目录。你可以使用loc -u
忽略忽略文件,使用loc -uu
包括隐藏的文件/目录。
支持的语言
- ActionScript
- Ada
- Agda
- AmbientTalk
- ASP
- ASP.NET
- Assembly
- Autoconf
- Awk
- 批处理
- Bourne Shell
- C
- C Shell
- C/C++ Header
- C#
- C++
- Clojure
- CoffeeScript
- ColdFusion
- ColdFusionScript
- Coq
- CSS
- CUDA
- CUDA Header
- D
- Dart
- DeviceTree
- Erlang
- Forth
- FORTRAN Legacy
- FORTRAN Modern
- F# (Fsharp)
- GLSL
- Go
- Groovy
- Handlebars
- Haskell
- Hex
- HTML
- Idris
- INI
- Intel Hex
- Isabelle
- Jai
- Java
- JavaScript
- JSON
- Jsx
- Julia
- Kotlin
- Lean
- Less
- LinkerScript
- Lisp
- Lua
- Make
- Makefile
- Markdown
- Mustache
- Nim
- Nix
- Objective-C
- Objective-C++
- OCaml
- OpenCL
- Oz
- Pascal
- Perl
- PHP
- 纯文本
- Polly
- PowerShell
- Prolog
- Protobuf
- Pyret
- Python
- Qcl
- QML
- R
- Razor
- reStructuredText
- Ruby
- RubyHtml
- Rust
- SaltStack
- Sass
- Scala
- SML
- SQL
- Stylus
- Swift
- Tcl
- Terraform
- TeX
- Toml
- TypeScript
- Tsx
- UnrealScript
- VimL
- Wolfram
- XML
- Yacc
- YAML
- Zig
- Z Shell
版权归属
此项目包含来自Tokei(由Aaronepower提供)和ripgrep(由BurntSushi提供)的代码。
贡献者
依赖关系
~5-14MB
~147K SLoC