docs: README avec documentation exclusions et ignores SonarQube
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
71
README.md
Normal file
71
README.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# CRM E-Cosplay
|
||||
|
||||
CRM de gestion clients, facturation, devis et services numeriques pour l'Association E-Cosplay.
|
||||
|
||||
## Stack technique
|
||||
|
||||
- **Backend** : Symfony 7 / PHP 8.4 / Doctrine ORM / PostgreSQL
|
||||
- **Frontend** : Twig + Tailwind CSS (neo-brutalist) + Vanilla JS
|
||||
- **PDF** : FPDF/FPDI + Dompdf (CGV)
|
||||
- **Paiement** : Stripe (CB, SEPA, PayPal, Klarna) + Stripe Connect
|
||||
- **Signature** : DocuSeal
|
||||
- **Recherche** : Meilisearch
|
||||
- **Auth** : Keycloak SSO + 2FA (email/TOTP)
|
||||
- **Infra** : Docker + Caddy + PgBouncer
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
make run_test # PHP + JS
|
||||
make test_coverage # PHP avec couverture HTML
|
||||
make run_test_coverage_js # JS avec couverture
|
||||
```
|
||||
|
||||
## Qualite
|
||||
|
||||
```bash
|
||||
make sonar # PHPStan + ESLint + Coverage + SonarQube
|
||||
```
|
||||
|
||||
## SonarQube - Exclusions et ignores
|
||||
|
||||
### Exclusions d'analyse (`sonar.exclusions`)
|
||||
|
||||
| Fichier/Pattern | Raison |
|
||||
|---|---|
|
||||
| `vendor/**`, `var/**`, `node_modules/**` | Dependances tierces |
|
||||
| `migrations/**` | Code genere par Doctrine |
|
||||
| `src/Repository/**` | Repositories Doctrine auto-generes, pas de logique metier |
|
||||
| `templates/email/**`, `templates/emails/**` | Templates email HTML (pas de logique testable) |
|
||||
| `src/Service/AwsSesService.php` | Wrapper AWS SES (appels SDK externes) |
|
||||
| `src/Service/CloudflareService.php` | Wrapper Cloudflare API (appels SDK externes) |
|
||||
| `src/Service/DnsCheckService.php` | Appels systeme DNS (dig, whois) |
|
||||
| `src/Service/DnsInfraHelper.php` | Helper DNS infra (appels systeme) |
|
||||
| `src/Service/StripePriceService.php` | Wrapper Stripe Price API |
|
||||
| `src/Service/StripeWebhookService.php` | Gestion secrets webhook Stripe |
|
||||
| `src/Service/MailcowService.php` | Wrapper Mailcow API (service mail externe) |
|
||||
| `src/Controller/WebhookDocuSealController.php` | Webhook DocuSeal (interactions externes) |
|
||||
| `src/Controller/DnsReportController.php` | Rapport DNS (appels systeme) |
|
||||
| `src/Command/CheckDnsCommand.php` | Commande DNS (appels systeme) |
|
||||
| `src/Command/CloudflareDnsCleanCommand.php` | Commande Cloudflare (API externe) |
|
||||
|
||||
### Exclusions de duplication CPD (`sonar.cpd.exclusions`)
|
||||
|
||||
| Fichier/Pattern | Raison |
|
||||
|---|---|
|
||||
| `src/Entity/**` | Entites Doctrine : getters/setters repetitifs par nature |
|
||||
| `src/Repository/**` | Repositories : structure identique (ServiceEntityRepository) |
|
||||
| `src/Service/Pdf/**` | Services PDF FPDF : Header/Footer/Body patterns similaires entre AdvertPdf, FacturePdf, DevisPdf |
|
||||
| `src/Service/TarificationService.php` | Config prix avec structures repetitives |
|
||||
| `src/Service/AdvertService.php`, `FactureService.php`, `DevisService.php` | Pattern TVA/totaux commun (isTvaEnabled, getTvaRate, computeTotals) |
|
||||
| `src/Service/MeilisearchService.php` | DAL CRUD repetitif pour 9 index (index/remove/search x 9 entites) |
|
||||
| `templates/admin/clients/show.html.twig` | Badges de statut HTML repetitifs (24 badges similaires pour differents etats) |
|
||||
|
||||
### Ignores de regles (`sonar.issue.ignore.multicriteria`)
|
||||
|
||||
| Regle | Fichier | Raison |
|
||||
|---|---|---|
|
||||
| `php:S4144` (methodes identiques) | `**/*.php` | Faux positifs sur methodes avec meme structure mais contexte different |
|
||||
| `php:S107` (trop de parametres) | `MailerService.php` | `sendEmail()` necessite 8 params (to, subject, content, from, replyTo, unsubscribe, attachments, priority) - tous utiles |
|
||||
| `php:S1200` (couplage classe) | `MeilisearchService.php` | Service DAL centralise qui depend de 9 entites par design |
|
||||
| `php:S1820` (trop de methodes) | `MeilisearchService.php` | 44 methodes = 3 generiques + (index/remove/search) x 9 entites + setup/purge/stats + serializers. Splitter ajouterait de la complexite sans valeur |
|
||||
Reference in New Issue
Block a user