Skip to content

patrickcd/pyscn

Β 
Β 

pyscn - Python Code Quality Analyzer

PyPI Go License CI

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

pyscn_20251005.mov

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 --help or pyscn <command> --help for 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 init to 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

About

pyscn - An Intelligent Python Code Quality Analyzer

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 97.4%
  • Shell 2.1%
  • Other 0.5%