Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kbknapp/cargo-count
a cargo subcommand for counting lines of code in Rust projects
https://github.com/kbknapp/cargo-count
Last synced: 3 months ago
JSON representation
a cargo subcommand for counting lines of code in Rust projects
- Host: GitHub
- URL: https://github.com/kbknapp/cargo-count
- Owner: kbknapp
- License: mit
- Archived: true
- Created: 2015-08-20T16:25:05.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2023-07-02T06:52:53.000Z (over 1 year ago)
- Last Synced: 2024-06-22T02:09:41.074Z (4 months ago)
- Language: Rust
- Homepage:
- Size: 194 KB
- Stars: 129
- Watchers: 5
- Forks: 24
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
# cargo-count
[![Join the chat at https://gitter.im/kbknapp/cargo-count](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kbknapp/cargo-count?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Linux: [![Build Status](https://travis-ci.org/kbknapp/cargo-count.svg?branch=master)](https://travis-ci.org/kbknapp/cargo-count)
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](https://github.com/aaronepower/tokei) by [Aaronepower](https://github.com/aaronepower)
## Demo
To count the source code in the [Rust](https://github.com/rust-lang/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](https://www.rust-lang.org) 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`)
```sh
$ 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
```sh
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:
-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 outputOPTIONS:
-l, --language ... Only count these languges (by source code extension)
(i.e. '-l js py cpp')
-e, --exclude ... Files or directories to exclude (automatically includes '.git')
--utf8-rule Sets the UTF-8 parsing rule (Defaults to 'strict')
[values: ignore lossy strict]
-s, --separator Set the thousands separator for pretty printingARGS:
to_count... The files or directories (including children) to count
(defaults to current working directory when omitted)When using '--exclude ' the path given can either be relative to the current
directory, or absolute. When '' 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'.
```## License
`cargo-count` is released under the terms of the MIT. See the LICENSE-MIT file for the details.
## Dependencies Tree
![cargo-count dependencies](cargo-count.png)