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

Download history 89/week @ 2024-03-11 66/week @ 2024-03-18 57/week @ 2024-03-25 75/week @ 2024-04-01 46/week @ 2024-04-08 38/week @ 2024-04-15 62/week @ 2024-04-22 52/week @ 2024-04-29 64/week @ 2024-05-06 74/week @ 2024-05-13 59/week @ 2024-05-20 53/week @ 2024-05-27 62/week @ 2024-06-03 59/week @ 2024-06-10 50/week @ 2024-06-17 44/week @ 2024-06-24

每月下载量 219
2 个 crate 中使用

MIT 许可证

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