| Crates.io | howmany |
| lib.rs | howmany |
| version | 2.1.0 |
| created_at | 2025-07-13 08:01:29.197589+00 |
| updated_at | 2025-09-11 03:45:00.544458+00 |
| description | A blazingly fast, intelligent code analysis tool with parallel processing, caching, and beautiful visualizations |
| homepage | https://github.com/GriffinCanCode/howmany |
| repository | https://github.com/GriffinCanCode/howmany |
| max_upload_size | |
| id | 1750108 |
| size | 1,521,969 |
A fast, intelligent code analysis tool for counting lines of code and analyzing project statistics.
HowMany is a command-line tool that analyzes codebases to provide comprehensive statistics about files, lines of code, complexity, and development time estimates. It automatically detects user-created code files while filtering out dependencies, build artifacts, and generated files.
Available integrations:

brew install howmany
cargo install howmany
git clone https://github.com/GriffinCanCode/howmany.git
cd howmany
cargo build --release
./rebuild.sh
This will build the project and create a symlink in /usr/local/bin/howmany for system-wide access.
HowMany can be integrated directly into your GitHub workflows using the official GitHub Action:
name: Code Analysis
on: [push, pull_request]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: GriffinCanCode/howmany-actions@v1
with:
path: '.'
create-pr-comment: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Quality Gate
on: [pull_request]
jobs:
quality-check:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Quality Gate Check
uses: GriffinCanCode/howmany-actions@v1
with:
fail-on-quality-gate: true
quality-threshold: 80
maintainability-threshold: 70
documentation-threshold: 25
create-pr-comment: true
For detailed configuration options and advanced usage, see the HowMany GitHub Action documentation.
HowMany has a dedicated VS Code extension that brings code analysis directly into your editor:

# Install from VS Code Marketplace
code --install-extension GriffinCanCode.howmany
Features:
Quick Start:
For more information, visit the HowMany VS Code Extension repository.
# Analyze current directory (interactive mode by default)
howmany
# Analyze specific directory
howmany /path/to/project
# Non-interactive text output
howmany --no-interactive
# Show individual file statistics
howmany --files
# Verbose output with detailed breakdown
howmany --verbose
# Generate HTML report with interactive charts
howmany --output html
# Export to JSON
howmany --output json
# Export to CSV
howmany --output csv
# Plain text output
howmany --output text
# Analyze only specific file extensions
howmany --ext rs,py,js
# Set maximum directory depth
howmany --depth 3
# Include hidden files
howmany --hidden
# Add custom ignore patterns
howmany --ignore node_modules,target,dist
# List files that would be analyzed
howmany --list
# Sort by different criteria
howmany --sort lines --desc
howmany --sort code
howmany --sort files
howmany --sort comments
howmany --sort size
HowMany automatically detects and analyzes these languages:
Systems & Performance:
Object-Oriented:
Scripting & Dynamic:
Functional & Academic:
Mobile & Cross-Platform:
Rust ████████████████████████████████████████ 45.2%
JavaScript ████████████████████████████ 32.1%
Python ████████████████ 18.7%
TypeScript ████ 4.0%
Example distribution from a typical multi-language project
The Maintainability Index is an industry-standard metric that predicts code maintainability:
The default interactive mode provides:
Tab / Shift+Tab: Switch between tabs1, 2, 3: Jump to specific tabs↑/↓ or j/k: Navigate lists and tables/ or s: Toggle search modet: Toggle code health view (in Languages tab)h or F1: Show helpq or Esc: QuitTab: Cycle between search modesEnter: Jump to selected result=== Code Statistics ===
Total files: 127
Total lines: 15,847
Code lines: 11,234
Comment lines: 2,156
Documentation lines: 1,247
Blank lines: 1,210
Total size: 567,890 bytes (554.6 KB)
=== Complexity Analysis ===
Functions: 342
Average complexity: 3.8
Max nesting depth: 5
Maintainability index: 78.2
=== Quality Metrics ===
Overall quality score: 82.4/100
Documentation score: 75.1/100
Maintainability score: 78.2/100
=== Time Estimates ===
Total development time: 3 days, 2 hours
Code writing time: 2 days, 1 hour
Documentation time: 6 hours
| Option | Short | Description |
|---|---|---|
--output |
-o |
Output format: text, json, csv, html |
--files |
-f |
Show individual file statistics |
--verbose |
-v |
Show detailed breakdown by extension |
--no-interactive |
Disable interactive mode (force text output) | |
--depth |
-d |
Maximum directory depth to traverse |
--ext |
-e |
Only count specific extensions (comma-separated) |
--hidden |
Include hidden files and directories | |
--sort |
-s |
Sort by: files, lines, code, comments, size |
--desc |
Sort in descending order | |
--ignore |
Additional ignore patterns (comma-separated) | |
--list |
-l |
List files that would be counted (dry run) |
HowMany automatically excludes:
node_modules/, target/, __pycache__/, site-packages/vendor/, deps/, build/, dist/, .next/*.o, *.class, *.pyc, *.pyo, *.obj, *.exe.cache/, .tmp/, temp/, .serverless/.git/, .svn/, .hg/, .bzr/.vscode/, .idea/, .vs/, .DS_Store*.generated.*, *.min.js, *.bundle.**.log, *.tmp, coverage/, reports/Create ~/.config/howmany/config.toml for custom settings:
[defaults]
output_format = "interactive"
show_progress = true
use_colors = true
interactive_by_default = true
[performance]
parallel_processing = true
cache_enabled = true
chunk_size = 100
[filtering]
respect_gitignore = true
include_hidden = false
max_depth = 50
[quality_thresholds]
excellent_maintainability = 85.0
good_maintainability = 65.0
min_doc_coverage = 20.0
[custom_patterns]
ignore = ["*.tmp", "*.log", "node_modules/"]
include_extensions = [] # Empty means all supported
howmany ~/my-rust-project --ext rs,toml --verbose
howmany ~/my-project --output html --files
howmany --no-interactive --verbose | grep -A 10 "Quality Metrics"
howmany --ext md,rst,txt --sort lines --desc
# Large codebase analysis with caching
howmany /path/to/large/project --depth 10 --verbose
MIT License. See LICENSE for details.
Contributions are welcome! Please feel free to submit pull requests or open issues.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Current version: 2.0.0