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.0b2-py3-none-win_amd64.whl (4.0 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3macOS 11.0+ ARM64

pyscn-0.5.0b2-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.0b2-py3-none-win_amd64.whl.

File metadata

  • Download URL: pyscn-0.5.0b2-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.0b2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 49e564698dbd7d0955dc2d3f8e974a635ca26d93d183742e67c0d1f7dac63b91
MD5 48bad669e7589adbe39b6137a4d2a2c6
BLAKE2b-256 380e48e81dfba500f0959072df350338e7748a71a82cd822b1bbdd49192bb270

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyscn-0.5.0b2-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 a7e0c53b36379ca4a6fb24d9bc527424fbf0324391a6007849bafeae91890b70
MD5 0ba19420cef7d8c84ad0968e98b16cac
BLAKE2b-256 f60c9a15772ae3d6f3097f8e8c1f3e9a14508559f45b848034742552d38e56b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyscn-0.5.0b2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3e40039acee0cdf7a993e7bec67393f04a7472d1c0b8098438db58d9533812e5
MD5 d339b4b6475ee4681d20a1eb06589fc9
BLAKE2b-256 2bc366ae4c2f40692ac518a9b322c4e2bd7dc091e5248d54a0f413be8bdd335b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyscn-0.5.0b2-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3def74733e596e399ac34f906ceeca992a9b034dfbfbe74f8cfbecb2b89c186a
MD5 79039f90f2e1a7a85acd94377876149a
BLAKE2b-256 b241de30f9acffef8c90cf20d8cc2d1f57252b853f20d1445c5515fafb8ce083

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