Skip to main content

An intelligent Python code quality analyzer with architectural guidance

Project description

pyscn - Python Code Quality Analyzer

PyPI Go License CI

pyscn is an intelligent Python code quality analyzer that performs deep structural analysis to help you write cleaner, more maintainable code.

What Can It Do For You?

  • 🔍 Find Complex Code - Identify functions that are hard to test and maintain
  • 🧹 Remove Dead Code - Detect unreachable code that clutters your codebase
  • 📋 Detect Duplicates - Find copy-pasted code for refactoring opportunities
  • 🔗 Analyze Dependencies - Understand module relationships and coupling
  • 📊 Validate Architecture - Ensure your code follows architectural patterns
  • 📈 Generate Reports - Export findings in HTML, JSON, YAML, or CSV

Quick Start

# Run analysis without installation
uvx pyscn analyze .
# or
pipx run pyscn analyze .

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

Installation

# Install with pipx (recommended)
pipx install pyscn

# Or run directly with uvx
uvx 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

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 GuideArchitectureTesting

License

MIT License — see LICENSE


Built with ❤️ using Go and tree-sitter

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

pyscn-0.5.0b1-py3-none-win_amd64.whl (4.0 MB view details)

Uploaded Python 3Windows x86-64

pyscn-0.5.0b1-py3-none-manylinux_2_17_x86_64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

pyscn-0.5.0b1-py3-none-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

pyscn-0.5.0b1-py3-none-macosx_10_9_x86_64.whl (3.9 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file pyscn-0.5.0b1-py3-none-win_amd64.whl.

File metadata

  • Download URL: pyscn-0.5.0b1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 4.0 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyscn-0.5.0b1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8975fa9d2c7f9000645a6d0897688bcfd1ef4766044a56dc94f4a83ff711c15a
MD5 b8feb965526b2235d60792fd4b2363c4
BLAKE2b-256 5a5c7a01de3d91696f83c4ab76b29dbfa7758777a535ff06c3fe10b8e46c69ae

See more details on using hashes here.

File details

Details for the file pyscn-0.5.0b1-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyscn-0.5.0b1-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5937885cb8bfca47178c9e88e61a73b7365003f5e13c91b0e37639045ec7a92b
MD5 97cb7fb1000d2cfe2dfa7fc6f9be0369
BLAKE2b-256 9d1c52e07ed2ef77039ad79cd3a7662cd5d8192c5d20f1817458966cc2a294a0

See more details on using hashes here.

File details

Details for the file pyscn-0.5.0b1-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyscn-0.5.0b1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f74a94781003fd3761a970d36a5ca470faf542d9575e3e8c03d3dc7eb42b7bc
MD5 262a61eca75e70a2c37840d52f30521e
BLAKE2b-256 1bae11f438e1387bf6fb4db6d4f5532a95e88ee7295e0589a7d8bcc7a01e78c2

See more details on using hashes here.

File details

Details for the file pyscn-0.5.0b1-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyscn-0.5.0b1-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 372a8bda61381d94ad5502bf09c3db411c296b58b13ccdd587e53b392736cf84
MD5 99e0b69dc1ea99229888e16de5eb5e99
BLAKE2b-256 b74ad9d5c12e576a3a5ea95e05f29d32f0604253af587909ce213fc2a26fa7a5

See more details on using hashes here.

Supported by

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