Popularity
3.9
Stable
Activity
0.0
Stable
110
6
15

Programming language: Rust

## cargo-count alternatives and similar packages

Based on the "Cargo" category

• ### cargo-edit

allows you to add and list dependencies by reading/writing to your Cargo.toml file from the command line
• ### cargo-watch

utility for cargo to compile projects when sources change
• ### cargo-outdated

displays when newer versions of Rust dependencies are available, or out of date
• ### cargo-script

lets people quickly and easily run Rust "scripts" which can make use of Cargo's package ecosystem
• ### cargo-graph

updated fork of cargo-dot with additional features
• ### cargo-check

a wrapper around cargo rustc -- -Zno-trans which can be helpful for running a faster compile if you only need correctness checks
• ### cargo-dot

generate graphs of a Cargo project's dependencies
• ### cargo-do

run multiple cargo commands in a row
• ### cargo-multi

runs specified cargo command on multiple crates
• ### cargo-info

queries crates.io for crates details from command line

Do you think we are missing an alternative of cargo-count or a related project?

### Popular Comparisons

 SaaSHub - Software Alternatives and Reviews View more from us

## cargo-count

Linux:

A cargo subcommand for displaying line counts of source code in projects, including a niave unsafe counter for Rust source files. This subcommand was originally based off and inspired by the project tokei by Aaronepower

## Demo

To count the source code in the Rust repository (checkout 4c99649), and print some naive statistics on how much "unsafe" code exists.

NOTE: The Rust repository is quite large, if you're on a slow internet connect consider using a smaller repository, such as the cargo-count repo.

$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%)  The --separator , sets a , character as the thousands separator, and --unsafe-statistics looks for, and counts lines of unsafe. ## Installing cargo-count can be installed with cargo install $ cargo install cargo-count


This may require a nightly version of cargo if you get an error about the install command not being found. You may also compile and install the traditional way by followin the instructions below.

## Compiling

Follow these instructions to compile cargo-count, then skip down to Installation.

1. Ensure you have current version of cargo and Rust installed
2. Clone the project $git clone https://github.com/kbknapp/cargo-count && cd cargo-count 3. Build the project $ cargo build --release (NOTE: There is a large performance differnce when compiling without optimizations, so I recommend alwasy using --release to enable to them)
4. Once complete, the binary will be located at target/release/cargo-count

## Installation and Usage

All you need to do is place cargo-count somewhere in your $PATH. Then run cargo count anywhere in your project directory. For full details see below. ### Linux / OS X You have two options, place cargo-count into a directory that is already located in your $PATH variable (To see which directories those are, open a terminal and type echo "${PATH//:/\n}", the quotation marks are important), or you can add a custom directory to your $PATH

Option 1 If you have write permission to a directory listed in your $PATH or you have root permission (or via sudo), simply copy the cargo-count to that directory # sudo cp cargo-count /usr/local/bin Option 2 If you do not have root, sudo, or write permission to any directory already in $PATH you can create a directory inside your home directory, and add that. Many people use $HOME/.bin to keep it hidden (and not clutter your home directory), or $HOME/bin if you want it to be always visible. Here is an example to make the directory, add it to $PATH, and copy cargo-count there. Simply change bin to whatever you'd like to name the directory, and .bashrc to whatever your shell startup file is (usually .bashrc, .bash_profile, or .zshrc) $ mkdir ~/bin
$echo "export PATH=$PATH:$HOME/bin" >> ~/.bashrc$ cp cargo-count ~/bin
\$ source ~/.bashrc


### Windows

On Windows 7/8 you can add directory to the PATH variable by opening a command line as an administrator and running

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


Otherwise, ensure you have the cargo-count binary in the directory which you operating in the command line from, because Windows automatically adds your current directory to PATH (i.e. if you open a command line to C:\my_project\ to use cargo-count ensure cargo-count.exe is inside that directory as well).

### Options

There are a few options for using cargo-count which should be somewhat self explanitory.

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

FLAGS:
-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` is released under the terms of the MIT. See the LICENSE-MIT file for the details.