An intelligent Python code quality analyzer with architectural guidance
Project description
pyscn - Python Code Quality Analyzer
pyscn is a code quality analyzer for Python vibe coders.
Building with Cursor, Claude, or ChatGPT? pyscn performs structural analysis to keep your codebase maintainable.
Quick Start
# Run analysis without installation
uvx pyscn analyze .
# or
pipx run pyscn analyze .
Demo
https://github.com/user-attachments/assets/07f48070-c0dd-437b-9621-cb3963f863ff
Features
- 🔍 CFG-based dead code detection – Find unreachable code after exhaustive if-elif-else chains
- 📋 Clone detection with APTED + LSH – Identify refactoring opportunities with tree edit distance
- 🔗 Coupling metrics (CBO) – Track architecture quality and module dependencies
- 📊 Cyclomatic complexity analysis – Spot functions that need breaking down
100,000+ lines/sec • Built with Go + tree-sitter
Installation
# Install with pipx (recommended)
pipx install pyscn
# Or with uv
uv tool install pyscn
Alternative installation methods
Build from source
git clone https://github.com/ludo-technologies/pyscn.git
cd pyscn
make build
Go install
go install github.com/ludo-technologies/pyscn/cmd/pyscn@latest
Common Commands
pyscn analyze
Run comprehensive analysis with HTML report
pyscn analyze . # All analyses with HTML report
pyscn analyze --json . # Generate JSON report
pyscn analyze --select complexity . # Only complexity analysis
pyscn analyze --select deps . # Only dependency analysis
pyscn analyze --select complexity,deps,deadcode . # Multiple analyses
pyscn check
Fast CI-friendly quality gate
pyscn check . # Quick pass/fail check
pyscn check --max-complexity 15 . # Custom thresholds
pyscn init
Create configuration file
pyscn init # Generate .pyscn.toml
💡 Run
pyscn --helporpyscn <command> --helpfor complete options
Configuration
Create a .pyscn.toml file or add [tool.pyscn] to your pyproject.toml:
# .pyscn.toml
[complexity]
max_complexity = 15
[dead_code]
min_severity = "warning"
[output]
directory = "reports"
⚙️ Run
pyscn initto generate a full configuration file with all available options
CI/CD Integration
# .github/workflows/code-quality.yml
name: Code Quality
on: [push, pull_request]
jobs:
quality-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install pyscn
- name: Quick quality check
run: pyscn check .
- name: Generate detailed report
run: pyscn analyze --json --select complexity,deadcode,deps src/
- name: Upload report
uses: actions/upload-artifact@v4
with:
name: code-quality-report
path: .pyscn/reports/
Documentation
📚 Development Guide • Architecture • Testing
Enterprise Support
For commercial support, custom integrations, or consulting services, contact us at contact@ludo-tech.org
License
MIT License — see LICENSE
Built with ❤️ using Go and tree-sitter
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyscn-1.0.2-py3-none-win_amd64.whl.
File metadata
- Download URL: pyscn-1.0.2-py3-none-win_amd64.whl
- Upload date:
- Size: 4.9 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4faf6ff22d459f1c76eeced0b5741643c71fa42b0404e151696bae2f78540046
|
|
| MD5 |
3c80ed46c47b04eaddd3a77bc1c820a1
|
|
| BLAKE2b-256 |
3a5ec550112f614149880427d37f6ca849fab10b18cf050ea029088bcb141e53
|
File details
Details for the file pyscn-1.0.2-py3-none-manylinux_2_17_x86_64.whl.
File metadata
- Download URL: pyscn-1.0.2-py3-none-manylinux_2_17_x86_64.whl
- Upload date:
- Size: 4.7 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f27ebf37104c6e2b859f4b183081126bc69ad28994436de47b648b7bbfed3e1d
|
|
| MD5 |
8898caa5849548bf9f3180df2f7dc69e
|
|
| BLAKE2b-256 |
65b20cfd5ca68563b6f93b36f850dfbcbdbe2746b4bb448ba9121a14a1f135a7
|
File details
Details for the file pyscn-1.0.2-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyscn-1.0.2-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.4 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb4fd62f78e5ab60637b029fc8dfa652a01a3601ba11b1fdf5cc56fb0cba5ecd
|
|
| MD5 |
ffe677b7e2b7335f1321c6e01a4718e3
|
|
| BLAKE2b-256 |
e2ac94f4f4b384a290fb48e913c35a31c6792ec9f41fee9fb369d02f437721a1
|
File details
Details for the file pyscn-1.0.2-py3-none-macosx_10_9_x86_64.whl.
File metadata
- Download URL: pyscn-1.0.2-py3-none-macosx_10_9_x86_64.whl
- Upload date:
- Size: 4.7 MB
- Tags: Python 3, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6eb53a5c850187efedeb87c0c1016ae2086893c0bad344bc5cf6f47533243781
|
|
| MD5 |
1ba7b1236d8587a8dc5ce788857f2ef5
|
|
| BLAKE2b-256 |
22e27c9bf231ddbda39da252f80e6d4ab3ae3cd362051a379e76c9b80295c2b7
|