mirror of
https://github.com/ludo-technologies/pyscn.git
synced 2025-10-06 00:59:45 +03:00
0fb282176536fd38f387cbe991b94b665b69cab6
Fix critical issues in CFG builder for more accurate dead code detection:
1. Fix blockTerminates() to check only last statement
- Previously checked all statements, causing false positives
- Now only checks the final statement to avoid detecting terminators
in nested control flow (e.g., return inside if-statement within block)
- Prevents incorrect dead code detection in complex scenarios
2. Replace error logging with panic for parser bugs
- Changed from logging to fail-fast panic when elif_clause has missing fields
- Parser bugs are programming errors, not user errors, so immediate failure
with detailed error message is appropriate
- Improves debugging by failing at the exact point of error
These changes improve the accuracy and debuggability of dead code analysis
without breaking any existing functionality.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
chore: prepare for public repo\n\n- Remove tracked binaries and embedded venv\n- Add SECURITY.md and CODE_OF_CONDUCT.md\n- Update .gitignore to prevent binaries/env from reappearing\n- Fix Makefile to use pyscn module and binary\n- Align CONTRIBUTING links with ludo-technologies/pyscn\n- Update README distribution note (#75)
chore: prepare for public repo\n\n- Remove tracked binaries and embedded venv\n- Add SECURITY.md and CODE_OF_CONDUCT.md\n- Update .gitignore to prevent binaries/env from reappearing\n- Fix Makefile to use pyscn module and binary\n- Align CONTRIBUTING links with ludo-technologies/pyscn\n- Update README distribution note (#75)
chore: prepare for public repo\n\n- Remove tracked binaries and embedded venv\n- Add SECURITY.md and CODE_OF_CONDUCT.md\n- Update .gitignore to prevent binaries/env from reappearing\n- Fix Makefile to use pyscn module and binary\n- Align CONTRIBUTING links with ludo-technologies/pyscn\n- Update README distribution note (#75)
chore: prepare for public repo\n\n- Remove tracked binaries and embedded venv\n- Add SECURITY.md and CODE_OF_CONDUCT.md\n- Update .gitignore to prevent binaries/env from reappearing\n- Fix Makefile to use pyscn module and binary\n- Align CONTRIBUTING links with ludo-technologies/pyscn\n- Update README distribution note (#75)
pyscn - Python Code Quality Analyzer
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 --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
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 Guide • Architecture • Testing
License
MIT License — see LICENSE
Built with ❤️ using Go and tree-sitter
Description
pyscn - An Intelligent Python Code Quality Analyzer
architecture-analysisclone-detectioncode-complexitydead-code-detectiondependency-analysispythonstatic-analysis
Readme
MIT
13 MiB
Languages
Go
97.3%
Shell
2.2%
Makefile
0.3%
Python
0.2%