1 unstable release

new 0.1.0 Feb 13, 2025

#104 in Cargo plugins

Download history 142/week @ 2025-02-11

142 downloads per month

MIT/Apache

28KB
749 lines

Wise Analysis of Rust Lines of Code (WarLOC)

There are hundreds of tools that count lines of code in you software project. But have you ever wondered how many of those lines are inside hundreds of unit tests spread across your Rust modules? And let's be honest, we all what to brag about our project documentation being bigger than the code itself.

warloc can help you with both of those issues and more. Here is what it does you:

  • Counts separately lines of codes, documentation comments, regular comments and blank lines.
  • Separates those into lines belonging to main code, tests and examples.
  • Finds integration tests under tests directories.
  • Finds unit test code and fixtures under #[cfg(test)] and #[test].
  • Understands (to a limit) Rust syntax, so is more accurate in its counts then most generic LOC counters.
  • Does not count ignored (by .gitignore) files.
  • Can optionally give you stats file-by-file.

Here is the output for cargo repository:

File count: 1188
Type         | Code         | Blank        | Doc comments | Comments     | Total       
-------------|--------------|--------------|--------------|--------------|-------------
Main         | 82530        | 9682         | 12625        | 6220         | 111057      
Tests        | 144421       | 20538        | 588          | 10151        | 175698      
Examples     | 169          | 27           | 5            | 19           | 220         
-------------|--------------|--------------|--------------|--------------|-------------
             | 227120       | 30247        | 13218        | 16390        | 286975      

Installation

cargo install cargo-warloc

Usage

cargo warloc

Contributing

This project is made for fun, so there are no plans for implementing new features and fixing bugs (unless they feel like fun). If you like the project and you want it do something it doesn't, submit a PR, I'll gladly merge it (unless it's buggy or/and unreasonable) and publish the new version.

License

MIT or Apache 2.0 on your discretion.

Bragging

Got stats of your project and want to brag about it? Open a new thread in the discussions.

Dependencies

~5–13MB
~152K SLoC