Bonnes pratiques - delfour-co/repolens GitHub Wiki
Bonnes pratiques
Ce guide présente les meilleures pratiques pour utiliser RepoLens et maintenir un dépôt GitHub de qualité.
Workflow recommandé
1. Initialisation d'un nouveau projet
# 1. Initialiser RepoLens
repolens init --preset opensource
# 2. Vérifier la configuration
cat .repolens.toml
# 3. Lancer un audit initial
repolens plan -v
# 4. Prévisualiser les correctifs
repolens apply --dry-run
# 5. Appliquer les correctifs
repolens apply
2. Installer les Git hooks
# Installer les hooks pre-commit et pre-push
repolens install-hooks
# Le hook pre-commit vérifie les secrets avant chaque commit
# Le hook pre-push lance un audit complet avant chaque push
3. Maintenance continue
# Intégrer dans votre workflow CI/CD
# Voir la section CI/CD ci-dessous
Intégration CI/CD
GitHub Actions
Ajoutez RepoLens à vos workflows GitHub Actions :
name: RepoLens Audit
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 0 * * 0' # Hebdomadaire
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Build RepoLens
run: |
git clone https://github.com/delfour-co/cli--repolens.git
cd cli--repolens
cargo build --release
sudo cp target/release/repolens /usr/local/bin/
- name: Run audit
run: |
repolens plan --format sarif --output repolens-results.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: repolens-results.sarif
Pipeline local
#!/bin/bash
# Script de pré-commit
# Lancer l'audit
repolens plan
# Si des problèmes critiques sont trouvés, arrêter
if [ $? -ne 0 ]; then
echo "❌ Audit échoué. Corrigez les problèmes avant de commiter."
exit 1
fi
Gestion des secrets
❌ À éviter
# Ne jamais faire ça
echo "api_key=sk_live_1234567890" >> config.json
git add config.json
git commit -m "Add config"
✅ Bonnes pratiques
- Utiliser des variables d'environnement
# .env (ne pas commiter)
API_KEY=sk_live_1234567890
# .env.example (commiter)
API_KEY=sk_test_your_key_here
- Utiliser des gestionnaires de secrets
- HashiCorp Vault
- AWS Secrets Manager
- GitHub Secrets (pour CI/CD)
- Vérifier avant de commiter
# Lancer RepoLens avant chaque commit
repolens plan --only secrets
Documentation
README.md
Un bon README doit contenir :
- ✅ Description du projet
- ✅ Installation
- ✅ Utilisation de base
- ✅ Exemples de code
- ✅ Configuration
- ✅ Contribution
- ✅ Licence
Exemple de structure
# Mon Projet
Description courte du projet.
## Installation
```bash
npm install mon-projet
Utilisation
import { MonProjet } from 'mon-projet';
const instance = new MonProjet();
Configuration
Voir Configuration
Contribution
Voir CONTRIBUTING.md
Licence
MIT - Voir LICENSE
## Protection des branches
### Configuration recommandée
```toml
[actions.branch_protection]
enabled = true
branch = "main"
required_approvals = 1 # Au moins 1 review
require_status_checks = true # Tests doivent passer
block_force_push = true # Pas de force push
require_signed_commits = false # Optionnel selon le contexte
Pour les projets critiques
[actions.branch_protection]
required_approvals = 2
require_signed_commits = true
Gestion des dépendances
Vérification de la sécurité des dépendances
RepoLens vérifie automatiquement les vulnérabilités dans vos dépendances via :
- OSV API : Base de données open-source des vulnérabilités
- GitHub Security Advisories : Base de données GitHub
Support multi-écosystèmes
- Rust : Analyse de
Cargo.lock - Node.js : Analyse de
package-lock.json - Python : Analyse de
requirements.txt - Go : Analyse de
go.sum
Vérifications régulières
# Vérifier les vulnérabilités dans les dépendances
repolens plan --only dependencies
# Vérifier la sécurité globale
repolens plan --only security,dependencies
# Utiliser Dependabot (GitHub)
# Activer dans les paramètres du dépôt
Mises à jour
- ✅ Mettre à jour régulièrement les dépendances
- ✅ Tester après chaque mise à jour
- ✅ Utiliser des versions fixes (lock files)
- ✅ Vérifier les vulnérabilités avant chaque release
- ✅ Configurer Dependabot pour les mises à jour automatiques
- ✅ Surveiller les alertes de sécurité GitHub
Tests
Structure recommandée
tests/
├── unit/ # Tests unitaires
├── integration/ # Tests d'intégration
└── fixtures/ # Données de test
Couverture de code
RepoLens exige une couverture minimale de 80% pour garantir la qualité du code.
Configuration des quality gates
Les seuils de qualité sont configurables dans .github/quality-gates.toml :
[coverage]
minimum = 80.0 # Couverture minimale requise
target = 90.0 # Objectif de couverture
exclude = [
"src/main.rs", # Point d'entrée, souvent difficile à tester
"src/lib.rs", # Fichier de réexport
"tests/**", # Tests eux-mêmes
]
Vérification de la couverture
# Générer un rapport de couverture
cargo tarpaulin --out Xml --output-dir coverage
# Vérifier les quality gates
cargo run --bin check-quality-gates
Intégration CI/CD
La couverture est vérifiée automatiquement dans les workflows GitHub Actions :
- Job
coveragedans.github/workflows/ci.yml - Vérification des quality gates dans
.github/workflows/nightly.yml - Upload des rapports vers Codecov (optionnel)
Bonnes pratiques pour la couverture
- ✅ Viser au moins 80% de coverage (exigence minimale)
- ✅ Tester les cas limites et les cas d'erreur
- ✅ Tester les fonctions publiques de manière exhaustive
- ✅ Utiliser des tests d'intégration pour les workflows complexes
- ✅ Exclure les fichiers non testables (main.rs, lib.rs) du calcul
- ✅ Surveiller l'évolution de la couverture dans le temps
- ✅ Utiliser des outils comme
cargo-tarpaulinpour Rust
Code Review
Checklist
- Code lisible et bien documenté
- Tests ajoutés/modifiés
- Pas de secrets exposés
- Documentation mise à jour
- Pas de warnings de linter
- Tests passent
Sécurité
Audit de sécurité du code
RepoLens effectue un audit complet de sécurité incluant :
- Détection de code unsafe : Recherche de blocs
unsafedans le code de production - Vérification des patterns dangereux : Détection de patterns pouvant causer des vulnérabilités
- Analyse avec Semgrep : Intégration avec Semgrep pour détecter les vulnérabilités OWASP
- Vérification des secrets : Détection des secrets exposés
- Vérification des dépendances : Scan des vulnérabilités dans les dépendances
Checklist de sécurité
- Aucun secret dans le code
- SECURITY.md présent
- Alertes de vulnérabilité activées
- Dependabot configuré
- Branches protégées
- Reviews de code obligatoires (CODEOWNERS)
- Aucun code
unsafedans le code de production - Fichiers de verrouillage des dépendances présents
- Analyse de sécurité automatisée (Semgrep/CodeQL)
- Vérification régulière des vulnérabilités des dépendances
Comparaison de rapports
Suivi des améliorations
# Générer un rapport de référence (baseline)
repolens report --format json --output baseline.json
# Après avoir fait des corrections, générer un nouveau rapport
repolens report --format json --output current.json
# Comparer les deux rapports
repolens compare --base-file baseline.json --head-file current.json
Intégration CI avec détection de régression
# Échouer le build si de nouveaux problèmes apparaissent
repolens compare --base-file baseline.json --head-file current.json --fail-on-regression
Validation JSON Schema
Valider les rapports JSON
# Générer un rapport avec validation automatique
repolens report --format json --schema --validate
# Exporter le schéma pour validation externe
repolens schema --output schemas/audit-report.schema.json
Cache d'audit
Bonnes pratiques de cache
- Utiliser le cache en développement local pour des audits rapides
- Utiliser
--no-cacheen CI pour des résultats toujours frais - Utiliser
--clear-cacheaprès des changements de configuration - Le cache est automatiquement invalidé quand le contenu d'un fichier change (hash SHA256)
# Développement local (cache activé par défaut)
repolens plan
# CI/CD (désactiver le cache)
repolens plan --no-cache
Conformité des licences
Configurer la vérification des licences
["rules.licenses"]
enabled = true
allowed_licenses = ["MIT", "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", "ISC"]
denied_licenses = ["GPL-3.0", "AGPL-3.0"]
- Définir une liste blanche de licences autorisées pour vos dépendances
- Bloquer les licences incompatibles avec votre projet
- Surveiller les dépendances sans licence
Performance
Optimisations
- Utiliser le cache pour les audits répétitifs (activé par défaut)
- Utiliser
--dry-runavantapply - Filtrer par catégories si nécessaire
- Utiliser des presets appropriés
Maintenance
Audit régulier
# Audit hebdomadaire
repolens plan --format html --output weekly-audit.html
# Audit mensuel complet
repolens plan -vv --format json --output monthly-audit.json
Mise à jour de RepoLens
# Mettre à jour depuis les sources
cd cli--repolens
git pull
cargo build --release
Dépannage
Problèmes courants
- Erreur de configuration
# Vérifier la syntaxe
repolens init --validate
- Résultats inattendus
# Mode debug
repolens plan -vvv
- Performance lente
# Filtrer par catégories
repolens plan --only secrets,files
Ressources
Prochaines étapes
- Intégrez RepoLens dans votre workflow
- Configurez les presets selon vos besoins
- Automatisez les audits avec CI/CD