{"id":32136769,"url":"https://github.com/ludo-technologies/pyscn","last_synced_at":"2026-08-28T04:44:09.249Z","repository":{"id":314375193,"uuid":"1033244511","full_name":"ludo-technologies/pyscn","owner":"ludo-technologies","description":"An Intelligent Python Code Quality Analyzer","archived":false,"fork":false,"pushed_at":"2026-08-18T07:39:28.000Z","size":14442,"stargazers_count":1035,"open_issues_count":14,"forks_count":68,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-08-23T23:48:29.529Z","etag":null,"topics":["architecture-analysis","clone-detection","code-complexity","dead-code-detection","dependency-analysis","python","static-analysis"],"latest_commit_sha":null,"homepage":"https://docs.codescan.dev/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ludo-technologies.png","metadata":{"files":{"readme":"README.fr.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2025-08-06T14:11:51.000Z","updated_at":"2026-08-20T22:21:38.000Z","dependencies_parsed_at":"2026-08-08T21:00:05.454Z","dependency_job_id":null,"html_url":"https://github.com/ludo-technologies/pyscn","commit_stats":null,"previous_names":["ludo-technologies/pyscn","pyqol/pyqol"],"tags_count":86,"template":false,"template_full_name":null,"purl":"pkg:github/ludo-technologies/pyscn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludo-technologies%2Fpyscn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludo-technologies%2Fpyscn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludo-technologies%2Fpyscn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludo-technologies%2Fpyscn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ludo-technologies","download_url":"https://codeload.github.com/ludo-technologies/pyscn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludo-technologies%2Fpyscn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36928082,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-08-26T02:00:06.703Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["architecture-analysis","clone-detection","code-complexity","dead-code-detection","dependency-analysis","python","static-analysis"],"created_at":"2025-10-21T04:09:32.858Z","updated_at":"2026-08-28T04:44:09.243Z","avatar_url":"https://github.com/ludo-technologies.png","language":"Go","funding_links":[],"categories":["命令行工具"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n[English](README.md) | [日本語](README.ja.md) | [简体中文](README.zh-CN.md) | [Français](README.fr.md)\n\n\u003cbr\u003e\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/logo.svg\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/logo-light.svg\"\u003e\n  \u003cimg alt=\"pyscn\" src=\"assets/logo-light.svg\" width=\"320\"\u003e\n\u003c/picture\u003e\n\n**Un analyseur de qualité de code pour les vibe coders Python.**\n\nVous développez avec Cursor, Claude ou ChatGPT ? pyscn effectue une analyse structurelle pour maintenir la maintenabilité de votre codebase.\n\n[![Article](https://img.shields.io/badge/dev.to-Article-0A0A0A?style=flat-square\u0026logo=dev.to)](https://dev.to/daisukeyoda/pyscn-the-code-quality-analyzer-for-vibe-coders-18hk)\n[![PyPI](https://img.shields.io/pypi/v/pyscn?style=flat-square\u0026logo=pypi)](https://pypi.org/project/pyscn/)\n[![Downloads](https://img.shields.io/pypi/dm/pyscn?style=flat-square\u0026logo=pypi\u0026label=downloads)](https://pypi.org/project/pyscn/)\n[![Go](https://img.shields.io/github/go-mod/go-version/ludo-technologies/pyscn?style=flat-square\u0026logo=go)](https://go.dev/)\n[![License](https://img.shields.io/github/license/ludo-technologies/pyscn?style=flat-square)](LICENSE)\n\n*Vous travaillez avec d'autres langages ? pyscn fait partie de [polyscan](https://github.com/ludo-technologies/polyscan) — des analyseurs de qualité de code pour JavaScript/TypeScript et plus encore*\n\n\u003c/div\u003e\n\n## Démarrage rapide\n\n```bash\n# Lancer l'analyse sans installation\nuvx pyscn@latest analyze .\n# ou\npipx run pyscn analyze .\n```\n\n## Démo\n\nhttps://github.com/user-attachments/assets/71d7a126-9c5e-4254-99f4-f2cdedd526ad\n\n## Fonctionnalités\n\nUne seule commande note l'ensemble de votre base de code (0-100 avec une note de A à F) et génère un rapport HTML qui montre quoi corriger en premier.\n\npyscn analyse votre code sous cinq angles :\n\n- 🧹 **Code mort** - le code inatteignable que vous pouvez supprimer sans risque\n- 📋 **Code dupliqué** - le code copié-collé ou structurellement similaire qui mérite d'être fusionné (détection de clones Type 1-4)\n- 🌀 **Complexité** - les fonctions difficiles à lire et à tester (complexité cyclomatique et cognitive)\n- 🏗️ **Architecture** - imports circulaires, violations de règles de couches (préréglages clean / layered / hexagonal / MVC) et détection automatique de communautés de modules qui révèlent la structure réelle de votre code\n- 🧩 **Conception des classes** - les classes qui en font trop ou dépendent de trop de choses (couplage CBO, cohésion LCOM4)\n\n**100 000+ lignes/s** • Construit avec Go + tree-sitter\n\n## Intégration avec les agents IA\n\npyscn fournit des Agent Skills qui apprennent aux agents de codage IA quand et comment lancer chaque analyse : bilan de santé, refactorisation, revue d'architecture et rapports adaptés à la CI.\n\n### Agent Skills (recommandé)\n\n```bash\nuvx add-skills ludo-technologies/pyscn\n```\n\nCette commande installe les Skills dans votre projet. Elles fonctionnent avec Claude Code, Cursor, Codex, Gemini CLI et [de nombreux autres agents](https://github.com/ludo-technologies/add-skills) (ajoutez `--agent cursor` pour cibler un agent, `--global` pour tous vos projets).\n\nIl suffit ensuite de demander à votre agent :\n\n1. « Analyse la qualité du code du répertoire app/ »\n\n2. « Trouve le code dupliqué et aide-moi à le refactoriser »\n\n3. « Montre-moi le code complexe et aide-moi à le simplifier »\n\n### Serveur MCP (optionnel)\n\nPour une intégration plus poussée, le serveur `pyscn-mcp` intégré expose les mêmes analyses sous forme d'outils MCP à Claude Code, Cursor, ChatGPT et autres clients MCP.\n\n**Plugin Claude Code (configure le serveur MCP et les Skills ensemble) :**\n\n```bash\nclaude plugin marketplace add ludo-technologies/pyscn\nclaude plugin install pyscn-mcp@pyscn-marketplace\n```\n\n**Configuration manuelle pour Claude Code :**\n\n```bash\nclaude mcp add pyscn-mcp uvx -- pyscn-mcp\n```\n\n**Cursor / Claude Desktop :** ajoutez à vos paramètres MCP (`~/.config/claude-desktop/config.json` ou les paramètres Cursor) :\n\n```json\n{\n  \"mcpServers\": {\n    \"pyscn-mcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\"pyscn-mcp\"],\n      \"env\": {\n        \"PYSCN_CONFIG\": \"/path/to/.pyscn.toml\"\n      }\n    }\n  }\n}\n```\n\nConsultez `mcp/README.md` pour les guides de configuration et `docs/MCP_INTEGRATION.md` pour les détails d'architecture.\n\n## Installation\n\n```bash\n# Installer avec pipx (recommandé)\npipx install pyscn\n\n# Ou avec uv\nuv tool install pyscn\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eAutres méthodes d'installation\u003c/summary\u003e\n\n### Compilation depuis les sources\n```bash\ngit clone https://github.com/ludo-technologies/pyscn.git\ncd pyscn\nmake build\n```\n\n### Go install\n```bash\ngo install github.com/ludo-technologies/pyscn/cmd/pyscn@latest\n```\n\n\u003c/details\u003e\n\n## Commandes courantes\n\n### `pyscn analyze`\nLance une analyse complète avec rapport HTML\n```bash\npyscn analyze .                              # Toutes les analyses avec rapport HTML\npyscn analyze --json .                       # Générer un rapport JSON\npyscn analyze --select complexity .          # Analyse de complexité uniquement\npyscn analyze --select deps .                # Analyse de dépendances uniquement\npyscn analyze --select complexity,deps,deadcode . # Analyses multiples\npyscn analyze --skip-communities .           # Ignorer la détection de communautés de modules\n```\n\n### `pyscn check`\nGarde-fou qualité rapide pour la CI\n```bash\npyscn check .                         # Vérification rapide réussite/échec\npyscn check --max-complexity 15 .     # Seuils personnalisés\npyscn check --max-cycles 0 .          # Autoriser uniquement 0 dépendance cyclique\npyscn check --select deps .           # Vérifier uniquement les dépendances circulaires\npyscn check --select di .             # Détecter les anti-patterns d'injection de dépendances (optionnel)\npyscn check --allow-circular-deps .   # Autoriser les dépendances circulaires (avertissement uniquement)\n```\n\n### `pyscn init`\nCréer un fichier de configuration\n```bash\npyscn init                         # Générer .pyscn.toml\n```\n\n\u003e 💡 Exécutez `pyscn --help` ou `pyscn \u003ccommand\u003e --help` pour toutes les options\n\n## Configuration\n\nCréez un fichier `.pyscn.toml` ou ajoutez `[tool.pyscn]` à votre `pyproject.toml` :\n\n```toml\n# .pyscn.toml\n[complexity]\nmax_complexity = 15\n\n[dead_code]\nmin_severity = \"warning\"\n\n[output]\ndirectory = \"reports\"\n```\n\n\u003e ⚙️ Exécutez `pyscn init` pour générer un fichier de configuration complet avec toutes les options disponibles\n\n## Pyscn Bot (GitHub App)\n\n[Pyscn Bot](https://github.com/marketplace/pyscn-bot) surveille automatiquement la qualité de votre code Python.\n\n### Fonctionnalités\n\n- **Revue de code sur les PR** - Revue automatique sur chaque pull request\n- **Audit hebdomadaire du code** - Analyse l'ensemble du dépôt et crée des issues pour les problèmes architecturaux\n\n---\n\n## Documentation\n\n📖 **[Site de documentation pyscn](https://docs.codescan.dev/fr/)** — installation, catalogue de règles, référence CLI, configuration, spécification des sorties\n\nPour les contributeurs : **[Guide de développement](docs/DEVELOPMENT.md)** • **[Architecture](docs/ARCHITECTURE.md)** • **[Tests](docs/TESTING.md)**\n\n## Support entreprise\n\nPour un support commercial, des intégrations personnalisées ou des services de conseil, contactez-nous à contact@ludo-tech.org\n\n## Licence\n\nMIT License — voir [LICENSE](LICENSE)\n\n---\n\n*Construit avec ❤️ en utilisant Go et tree-sitter*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fludo-technologies%2Fpyscn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fludo-technologies%2Fpyscn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fludo-technologies%2Fpyscn/lists"}