Prerequisites
Before running cloc, check if it is installed:
code
which cloc
If not found, install it:
- •macOS:
brew install cloc - •npm:
npm install -g cloc - •Debian/Ubuntu:
sudo apt install cloc - •Red Hat/Fedora:
sudo yum install cloc
About cloc
cloc counts blank lines, comment lines, and physical lines of source code in 200+ programming languages. It can analyze files, directories, archives (tar, zip, .whl, .ipynb), and git commits/branches.
Common Usage
Count a directory (default: current project):
code
cloc .
Count using git file list (respects .gitignore):
code
cloc --vcs=git
Count a specific path:
code
cloc $ARGUMENTS
Count by file (detailed breakdown):
code
cloc --by-file --vcs=git
Diff between two git refs:
code
cloc --git --diff <ref1> <ref2>
Exclude directories:
code
cloc --exclude-dir=node_modules,vendor,.git .
Output Formats
Use these flags for machine-readable output:
- •
--json— JSON - •
--yaml— YAML - •
--csv— CSV - •
--md— Markdown table - •
--xml— XML
Useful Flags
| Flag | Purpose |
|---|---|
--by-file | Per-file breakdown instead of per-language |
--vcs=git | Use git to get file list (respects .gitignore) |
--git | Treat arguments as git targets (commits, branches) |
--diff <a> <b> | Show added/removed/modified lines between two sources |
--exclude-dir=<d1,d2> | Skip directories |
--exclude-lang=<l1,l2> | Skip languages |
--include-lang=<l1,l2> | Only count these languages |
--force-lang=<lang>,<ext> | Map file extension to a language |
--processes=N | Parallel processing (N cores) |
--quiet | Suppress progress output |
Guidelines
- •Prefer
--vcs=gitover bare.to avoid counting generated/vendored files - •Use
--jsonwhen the user needs to process the output programmatically - •When comparing versions, use
--git --diff <ref1> <ref2> - •For large repos, consider
--processes=Nto speed things up