#cargo-subcommand #line #statistics #count

app cargo-count

Cargo 子命令,用于显示项目统计信息,例如代码、注释和不安全计数器

7 个版本

使用旧的 Rust 2015

0.2.4 2017年11月7日
0.2.2 2016年9月6日
0.2.1 2015年12月24日
0.1.5 2015年11月14日

#296Cargo 插件

37 每月下载量

MIT 许可证

54KB
972

cargo-count

Join the chat at https://gitter.im/kbknapp/cargo-count

Linux: 构建状态

A cargo 子命令,用于显示项目中源代码的行数,包括 Rust 源文件的简单 unsafe 计数器。此子命令最初基于并受到项目 tokei(由 Aaronepower 提供)的启发

演示

要计算 Rust 仓库中的源代码(检出 4c99649),并打印一些关于有多少 "unsafe" 代码存在的简单统计信息。

注意: Rust 仓库相当大,如果您网络连接速度较慢,请考虑使用较小的仓库,例如 cargo-count 仓库。

$ git clone https://github.com/rust-lang/rust
$ cd rust
$ cargo count --separator , --unsafe-statistics
Gathering information...
         Language    Files  Lines    Blanks  Comments  Code     Unsafe (%)
         --------    -----  -----    ------  --------  ----     ----------
         Rust        6,018  528,510  66,984  133,698   327,792  3,163 (0.96%)
         C           54     9,962    1,445   1,492     7,025    7,025 (100.00%)
         CSS         4      1,266    149     52        1,065    
         JavaScript  4      1,118    131     166       821      
         Python      31     4,797    843     585       3,369    
         C Header    13     1,865    284     585       996      996 (100.00%)
         C++         4      1,611    185     81        1,345    1,345 (100.00%)
         --------    -----  -----    ------  --------  ----     ----------
Totals:              6,128  549,129  70,021  136,659   342,413  12,529 (3.66%)

使用 --separator , 设置 , 字符作为千位分隔符,并使用 --unsafe-statistics 查找并计算 unsafe 的行数。

安装

可以使用 cargo-count 来安装,命令为 cargo install

$ cargo install cargo-count

如果遇到关于 install 命令找不到的错误,可能需要安装 cargo 的夜间版本。您也可以按照以下说明编译并按传统方式安装。

编译

按照以下说明编译 cargo-count,然后跳转到安装部分。

  1. 请确保您已安装当前版本的 cargoRust
  2. 克隆项目 $ git clone https://github.com/kbknapp/cargo-count && cd cargo-count
  3. 构建项目 $ cargo build --release注意:在不进行优化编译时,性能差异很大,因此我建议始终使用 --release 以启用它们)
  4. 完成后,二进制文件将位于 target/release/cargo-count

安装和使用

您只需将 cargo-count 放置在您的 $PATH 变量中的某个位置。然后在任何项目目录下运行 cargo count。有关详细信息,请参阅以下内容。

Linux / OS X

您有两个选择,将 cargo-count 放入已位于您的 $PATH 变量中的目录(要查看这些目录,打开终端并输入 echo "${PATH//:/\n}",引号很重要),或者您可以将自定义目录添加到您的 $PATH

选项 1 如果您有对 $PATH 中列出的目录的写入权限,或者您有root权限(或通过 sudo),只需将 cargo-count 复制到该目录 # sudo cp cargo-count /usr/local/bin

选项 2 如果您没有root权限、sudo或对 $PATH 中任何目录的写入权限,您可以在您的家目录中创建一个目录,并将其添加。许多人使用 $HOME/.bin 来隐藏它(并且不会弄乱您的家目录),或者如果您想让它始终可见,可以使用 $HOME/bin。以下是一个示例,创建目录,将其添加到 $PATH,并将 cargo-count 复制到那里。

只需将 bin 更改为您想要的目录名,并将 .bashrc 更改为您的shell启动文件(通常是 .bashrc.bash_profile.zshrc

$ mkdir ~/bin
$ echo "export PATH=$PATH:$HOME/bin" >> ~/.bashrc
$ cp cargo-count ~/bin
$ source ~/.bashrc

Windows

在Windows 7/8上,您可以通过以管理员身份打开命令行并运行来将目录添加到 PATH 变量

C:\> setx path "%path%;C:\path\to\cargo-count\binary"

否则,请确保您在命令行操作目录中有 cargo-count 二进制文件,因为Windows会自动将您的当前目录添加到PATH(例如,如果您打开命令行到 C:\my_project\ 以使用 cargo-count,请确保 cargo-count.exe 也在该目录中)。

选项

使用 cargo-count 有几种选项,应该比较直观。

USAGE:
    cargo count [FLAGS] [OPTIONS] [--] [ARGS]

FLAGS:
    -S, --follow-symlinks      Follows symlinks and counts source files it finds
    -a, --all                  Do not ignore .gitignored paths
                               (Defaults to false when omitted)
    -h, --help                 Prints help information
        --unsafe-statistics    Displays lines and percentages of "unsafe" code
    -V, --version              Prints version information
    -v, --verbose              Print verbose output

OPTIONS:
    -l, --language <exts>...    Only count these languges (by source code extension)
                                (i.e. '-l js py cpp')
    -e, --exclude <paths>...    Files or directories to exclude (automatically includes '.git')
        --utf8-rule <rule>      Sets the UTF-8 parsing rule (Defaults to 'strict')
                                 [values: ignore lossy strict]
    -s, --separator <sep>       Set the thousands separator for pretty printing

ARGS:
    to_count...    The files or directories (including children) to count
                   (defaults to current working directory when omitted)

When using '--exclude <path>' the path given can either be relative to the current 
directory, or absolute. When '<path>' is a file, it must be relative to the current 
directory or it will not be found. Example, if the current directory has a child 
directory named 'target' with a child fild 'test.rs' and you use `--exclude target/test.rs' 

Globs are also supported. For example, to exclude 'test.rs' files from all child directories 
of the current directory you could do '--exclude */test.rs'.

许可证

cargo-count 在MIT许可证下发布。有关详细信息,请参阅LICENSE-MIT文件。

依赖关系树

cargo-count dependencies

依赖关系

~5MB
~106K SLoC