Skip to main content

ccloc - Count Lines of Code

PyPI version Python Version Downloads License: MIT GitHub release Build Status

A simple and fast CLI tool to count lines of code in your projects, built with Python and managed by uv.

Features

  • ๐Ÿ“Š Count lines of code by file extension/language
  • ๐ŸŽฏ Filter by specific file extensions
  • ๐Ÿšซ Exclude directories and files
  • ๐Ÿ“ˆ Beautiful table output with Rich
  • ๐Ÿ“„ Multiple output formats (table, JSON, CSV)
  • โšก Fast and efficient
  • ๐ŸŽจ Automatic comment and blank line detection

Installation

Using uv (recommended)

uv pip install ccloc

Using pip

pip install ccloc

From source

git clone https://github.com/chuongmep/ccloc.git
cd ccloc
uv sync

Usage

Basic usage

Show usage/help (default when no arguments):

ccloc

Count lines in the current directory:

ccloc .

Count lines in a specific directory:

ccloc /path/to/project

Filter by file extensions

Count only Python files:

ccloc --extensions .py
# or
ccloc -e .py

Count Python and JavaScript files:

ccloc -e .py -e .js -e .ts

Exclude directories

Exclude specific directories (by default excludes: .git, .venv, node_modules, __pycache__):

ccloc -x build -x dist

Output formats

Table format (default):

ccloc .

JSON format:

ccloc --format json
# or
ccloc -f json

CSV format:

ccloc -f csv > output.csv

Recursive scanning

By default, the tool recursively scans all subdirectories. You can disable this:

# Scan only top-level directory
ccloc --no-recursive

# Scan only top-level Python files
ccloc --no-recursive -e .py

Combined examples

Count Python and JavaScript files, excluding tests:

ccloc -e .py -e .js -x tests -x __tests__

Scan only current directory without recursion:

ccloc . --no-recursive

Count all code in a project with JSON output:

ccloc /path/to/project -f json

Output

The tool provides detailed statistics:

  • Files: Number of files for each language/extension
  • Lines: Total lines in files
  • Blank: Blank lines
  • Comment: Comment lines
  • Code: Actual code lines (Lines - Blank - Comment)

Example output:

                       Lines of Code                        
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Language/Extension โ”ƒ Files โ”ƒ Lines โ”ƒ Blank โ”ƒ Comment โ”ƒ  Code โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ .py                โ”‚     5 โ”‚  1234 โ”‚   123 โ”‚     111 โ”‚  1000 โ”‚
โ”‚ .js                โ”‚     3 โ”‚   567 โ”‚    45 โ”‚      66 โ”‚   456 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ TOTAL              โ”‚     8 โ”‚  1801 โ”‚   168 โ”‚     177 โ”‚  1456 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Development

This project uses uv for dependency management.

Setup development environment

# Clone the repository
git clone https://github.com/chuongmep/ccloc.git
cd ccloc

# Install dependencies
uv sync

# Run the tool in development mode
uv run ccloc

Run tests

uv run pytest

Build package

uv build

Supported Languages

The tool automatically detects comments for:

  • Python (.py)
  • JavaScript/TypeScript (.js, .ts)
  • Java (.java)
  • C/C++ (.c, .cpp)
  • C# (.cs)
  • Go (.go)
  • Rust (.rs)
  • PHP (.php)
  • Ruby (.rb)
  • Shell scripts (.sh)
  • YAML (.yaml, .yml)

And many more! Files with any extension can be counted.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License - see LICENSE file for details

Author

Chuong Ho - chuongpqvn@gmail.com

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccloc-0.1.6.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ccloc-0.1.6-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file ccloc-0.1.6.tar.gz.

File metadata

  • Download URL: ccloc-0.1.6.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for ccloc-0.1.6.tar.gz
Algorithm Hash digest
SHA256 5e58bf04546181b50e4b57fbf6391da673d4ebc57f8eae5afb55420550edd391
MD5 121db90b6af594b9628859269f469c71
BLAKE2b-256 92a668c81491d337806abd668999cf563d2d215934d9370a43f292a6b64fa7ec

See more details on using hashes here.

File details

Details for the file ccloc-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: ccloc-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for ccloc-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 81d2cf1b1904d9b5b5ebf50a735182d8e5537066d03cdfb3ae185881fe429897
MD5 46b76212c5ee013a53ef96abff72d5b8
BLAKE2b-256 7ebdd17a3f8b00bef0d94d99c02396910942c65b16ef23b89ef2372c33095355

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page