Skip to content

Commit 0ac0bfc

Browse files
Amoifrclaude
andcommitted
Bump version to 1.1.0 and update documentation
- Update Docker image version to 1.1.0 - Update README with coverage analysis documentation - Update .gitignore for test artifacts Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 445aca5 commit 0ac0bfc

3 files changed

Lines changed: 144 additions & 10 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
Thumbs.db
1010

1111
# Generated reports (examples)
12-
report/
12+
/report/
13+
phpquality-report/
1314

1415
# Symfony
1516
symfony-app/var/

README.md

Lines changed: 140 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
# PhpQuality - Analyseur statique PHP
22

33
> Analyseur statique PHP distribué via Docker, conçu pour remplacer `phpmetrics/phpmetrics` (désormais non maintenu).
4-
> Analyse votre code PHP et génère des rapports détaillés sur la complexité, la maintenabilité, le couplage et bien plus encore.
4+
> Analyse votre code PHP et génère des rapports détaillés sur la complexité, la maintenabilité, le couplage, l'architecture et la couverture de tests.
55
6+
**Version:** 1.1.0
67
**Auteur:** [Pascal CESCON](https://moi.ruedesjasses.fr)
78
**GitHub:** [amoifr/PhpQuality](https://github.com/amoifr/PhpQuality)
89

910
---
1011

1112
## Fonctionnalités
1213

13-
### Métriques v0.1
14+
### Métriques de code v0.1
1415

1516
| Métrique | Description |
1617
|----------|-------------|
@@ -32,6 +33,26 @@
3233
| **Matrice de dépendances** | Vue matricielle des dépendances entre couches |
3334
| **Score d'architecture** | Score global 0-100 basé sur les violations |
3435

36+
### Couverture de tests v1.1 (NOUVEAU)
37+
38+
| Fonctionnalité | Description |
39+
|----------------|-------------|
40+
| **Couverture des lignes** | Pourcentage de lignes de code couvertes par les tests |
41+
| **Couverture des méthodes** | Pourcentage de méthodes testées |
42+
| **Couverture des classes** | Pourcentage de classes testées |
43+
| **Couverture par package** | Analyse de couverture par namespace/package |
44+
| **Couverture par fichier** | Détail de couverture pour chaque fichier |
45+
| **Score de couverture** | Note A-F basée sur le pourcentage de couverture |
46+
47+
### Hall of Fame / Hall of Shame v0.3
48+
49+
| Fonctionnalité | Description |
50+
|----------------|-------------|
51+
| **Analyse git blame** | Statistiques par auteur via git blame |
52+
| **Score composite** | Score combinant MI et CCN par contributeur |
53+
| **Hall of Fame** | Top contributeurs en qualité de code |
54+
| **Hall of Shame** | Contributeurs dont le code nécessite de l'attention |
55+
3556
### Rapports HTML v0.2
3657

3758
Le rapport HTML multi-pages inclut :
@@ -45,8 +66,9 @@ Le rapport HTML multi-pages inclut :
4566
| **LCOM** | Cohésion par classe |
4667
| **LOC** | Lignes de code par fichier |
4768
| **Halstead** | Métriques de complexité avancées |
48-
| **Analysis** | Analyse multi-dimensionnelle et arbre du code |
69+
| **Analysis** | Analyse multi-dimensionnelle, arbre du code, contributeurs |
4970
| **Architecture** | Graphe de dépendances, violations SOLID, matrice de dépendances |
71+
| **Coverage** | Couverture de tests par fichier et package |
5072
| **Dependencies** | Analyse des dépendances Composer |
5173

5274
### Types de projets supportés
@@ -129,6 +151,30 @@ docker run --rm \
129151
analyze --source=/project/app/code/Vendor/Module --type=magento
130152
```
131153

154+
### Avec couverture de tests
155+
156+
```bash
157+
# Générer d'abord le rapport de couverture avec PHPUnit
158+
./vendor/bin/phpunit --coverage-clover coverage.xml
159+
160+
# Puis analyser avec la couverture
161+
docker run --rm \
162+
-v $(pwd):/project \
163+
-v $(pwd)/reports:/reports \
164+
amoifr13/phpquality \
165+
analyze --source=/project/src --coverage=/project/coverage.xml --report-html=/reports
166+
```
167+
168+
### Avec Hall of Fame/Shame (git blame)
169+
170+
```bash
171+
docker run --rm \
172+
-v $(pwd):/project \
173+
-v $(pwd)/reports:/reports \
174+
amoifr13/phpquality \
175+
analyze --source=/project/src --git-blame --report-html=/reports
176+
```
177+
132178
### Afficher le résumé dans le terminal uniquement
133179

134180
```bash
@@ -177,7 +223,11 @@ docker run --rm \
177223
| `--no-html` | Ne pas générer le rapport HTML |
178224
| `--fail-on-violation` | Échouer si des violations sont détectées |
179225
| `--git-blame` | Activer l'analyse git blame pour Hall of Fame/Shame (plus lent) |
226+
| `--coverage`, `-c` | Chemin vers le fichier de couverture Clover XML |
227+
| `--project-name`, `-p` | Nom du projet à afficher dans les titres du rapport |
228+
| `--lang`, `-l` | Langue du rapport (en, fr, de, es, it, pt, nl, pl, ru, ja, zh, ko...) |
180229
| `--list-types` | Lister tous les types de projets disponibles |
230+
| `--list-langs` | Lister toutes les langues disponibles |
181231

182232
---
183233

@@ -205,6 +255,8 @@ phpquality/
205255
│ │ │ │ ├── LayerDetector.php
206256
│ │ │ │ └── SolidAnalyzer.php
207257
│ │ │ ├── ArchitectureAnalyzer.php
258+
│ │ │ ├── CoverageAnalyzer.php
259+
│ │ │ ├── GitBlameAnalyzer.php
208260
│ │ │ ├── Metric/
209261
│ │ │ │ └── MaintainabilityIndex.php
210262
│ │ │ ├── ProjectType/
@@ -216,6 +268,11 @@ phpquality/
216268
│ │ │ ├── FileAnalyzer.php
217269
│ │ │ ├── ProjectAnalyzer.php
218270
│ │ │ └── Result/
271+
│ │ │ ├── ProjectResult.php
272+
│ │ │ ├── FileResult.php
273+
│ │ │ ├── ClassResult.php
274+
│ │ │ ├── ArchitectureResult.php
275+
│ │ │ └── CoverageResult.php
219276
│ │ ├── Command/
220277
│ │ │ └── AnalyzeCommand.php
221278
│ │ └── Report/
@@ -233,7 +290,12 @@ phpquality/
233290
│ │ ├── halstead.html.twig
234291
│ │ ├── analysis.html.twig
235292
│ │ ├── architecture.html.twig
293+
│ │ ├── coverage.html.twig
236294
│ │ └── dependencies.html.twig
295+
│ ├── translations/
296+
│ │ ├── messages.en.yaml
297+
│ │ ├── messages.fr.yaml
298+
│ │ └── ... (30+ langues)
237299
│ └── composer.json
238300
└── README.md
239301
```
@@ -247,7 +309,7 @@ phpquality/
247309
| Langage | PHP 8.3 |
248310
| Framework | Symfony 7.x |
249311
| Parseur AST | [nikic/php-parser](https://github.com/nikic/PHP-Parser) |
250-
| Rendu HTML | Twig + Chart.js |
312+
| Rendu HTML | Twig + Chart.js + D3.js |
251313
| CLI | Symfony Console |
252314
| Image de base | `php:8.3-cli-alpine` |
253315
| Gestion des dépendances | Composer |
@@ -296,6 +358,16 @@ phpquality/
296358
| 30-49 | D | Architecture à améliorer |
297359
| 0-29 | F | Architecture critique |
298360

361+
### Test Coverage
362+
363+
| Score | Rating | Interprétation |
364+
|-------|--------|----------------|
365+
| 80-100% | A | Excellente couverture |
366+
| 60-79% | B | Bonne couverture |
367+
| 40-59% | C | Couverture modérée |
368+
| 20-39% | D | Faible couverture |
369+
| 0-19% | F | Couverture critique |
370+
299371
### Règles de couches (Clean Architecture)
300372

301373
PhpQuality détecte automatiquement les couches et vérifie les règles de dépendances :
@@ -318,15 +390,75 @@ PhpQuality détecte automatiquement les couches et vérifie les règles de dépe
318390

319391
---
320392

393+
## Intégration CI/CD
394+
395+
### GitHub Actions
396+
397+
```yaml
398+
name: Code Quality
399+
400+
on: [push, pull_request]
401+
402+
jobs:
403+
quality:
404+
runs-on: ubuntu-latest
405+
steps:
406+
- uses: actions/checkout@v4
407+
408+
- name: Setup PHP
409+
uses: shivammathur/setup-php@v2
410+
with:
411+
php-version: '8.3'
412+
coverage: xdebug
413+
414+
- name: Install dependencies
415+
run: composer install
416+
417+
- name: Run tests with coverage
418+
run: ./vendor/bin/phpunit --coverage-clover coverage.xml
419+
420+
- name: Run PhpQuality
421+
run: |
422+
docker run --rm \
423+
-v ${{ github.workspace }}:/project \
424+
amoifr13/phpquality \
425+
analyze --source=/project/src \
426+
--coverage=/project/coverage.xml \
427+
--fail-on-violation \
428+
--json=/project/phpquality.json
429+
430+
- name: Upload results
431+
uses: actions/upload-artifact@v4
432+
with:
433+
name: phpquality-report
434+
path: phpquality.json
435+
```
436+
437+
### GitLab CI
438+
439+
```yaml
440+
code-quality:
441+
image: amoifr13/phpquality
442+
script:
443+
- analyze --source=/builds/$CI_PROJECT_PATH/src --coverage=/builds/$CI_PROJECT_PATH/coverage.xml --fail-on-violation
444+
artifacts:
445+
reports:
446+
codequality: phpquality.json
447+
```
448+
449+
---
450+
321451
## Feuille de route
322452
323453
- [x] **v0.1** - Analyse basique : LOC, CCN, MI, LCOM + rapport HTML + types de projets
324454
- [x] **v0.2** - Rapport HTML multi-pages avec documentation des métriques
325455
- [x] **v0.3** - Analyse multi-dimensionnelle, arbre du code, Hall of Fame/Shame, analyse des dépendances Composer
326456
- [x] **v0.4** - Analyse d'architecture (couches, violations SOLID, graphe de dépendances D3.js, dépendances circulaires)
327-
- [ ] **v0.5** - Règles CI configurables, mode `failIfFound`, intégration GitHub Actions
328-
- [ ] **v0.6** - Plugin Git, corrélation historique/métriques
329-
- [ ] **v1.0** - Rapport HTML complet (cercles, daltonisme, filtres, groupes)
457+
- [x] **v1.0** - Option git blame, nom de projet personnalisé
458+
- [x] **v1.1** - Analyse de couverture de tests (Clover XML)
459+
- [ ] **v1.2** - Règles CI configurables, seuils personnalisés
460+
- [ ] **v1.3** - Export PDF, comparaison entre versions
461+
- [ ] **v2.0** - Interface web interactive, historique des analyses
330462
331463
---
332464
@@ -358,3 +490,4 @@ MIT - voir le fichier [LICENSE](./LICENSE).
358490
- [PHP Insights (GitHub)](https://github.com/nunomaduro/phpinsights) - inspiration pour l'analyse de qualité
359491
- [SOLID principles (Wikipedia)](https://en.wikipedia.org/wiki/SOLID)
360492
- [Clean Architecture - Robert C. Martin](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)
493+
- [PHPUnit Code Coverage](https://phpunit.readthedocs.io/en/9.5/code-coverage-analysis.html)

docker/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ FROM php:8.3-cli-alpine
3333

3434
LABEL org.opencontainers.image.title="PhpQuality"
3535
LABEL org.opencontainers.image.description="PHP Static Code Analyzer - Metrics & Quality Reports"
36-
LABEL org.opencontainers.image.version="1.0.1"
36+
LABEL org.opencontainers.image.version="1.1.0"
3737
LABEL org.opencontainers.image.vendor="amoifr"
3838
LABEL org.opencontainers.image.source="https://github.com/amoifr/PhpQuality"
39-
LABEL org.opencontainers.image.authors="Pascal CESCON <contact@moi.ruedesjasses.fr>"
39+
LABEL org.opencontainers.image.authors="Pascal CESCON <pascal.cescon@gmail.com>"
4040

4141
# Install runtime dependencies (including git for blame analysis)
4242
RUN apk add --no-cache libzip tini git

0 commit comments

Comments
 (0)