Pour OpenClaw v2026.2 | Nécessite l’installation des skills
coding-agent,git-workflows,test-runneret un accès au dépôt de code du projet.
TL;DR: Revue de code : l’Agent analyse les changements de PR et génère un rapport de revue. Tests automatisés : "test-runner": {"frameworks": ["jest", "vitest"]}. Intégration CI/CD : Webhook recevant les événements GitHub/GitLab. Gestion multi-projets : "projects": {"frontend": {...}, "backend": {...}}. Commande principale : openclaw agent --message "Reviewer cette PR".
Objectifs pratiques
Construire un assistant de programmation IA capable de :
- Automatiser la revue de code
- Exécuter des tests et rapporter les résultats
- Générer la documentation du code
- S’intégrer au pipeline CI/CD
- Basculer entre les contextes de plusieurs projets
Installer les skills nécessaires
# Skills liés à la programmation
openclaw skill install coding-agent
openclaw skill install debug-pro
openclaw skill install git-workflows
openclaw skill install docker-essentials
# Skill de test
openclaw skill install test-runner
Automatisation de la revue de code
Configurer la revue de code
---
name: code-review-assistant
version: 1.0.0
description: Automated code review with OpenClaw
triggers:
- code review
- revue de code
- review
- PR review
---
# Code Review Assistant
Automate code review for pull requests.
## Features
- Review code changes
- Check for common issues
- Suggest improvements
- Generate review comments
## Review Checklist
1. **Code Quality**
- Naming conventions
- Code structure
- Error handling
2. **Security**
- SQL injection
- XSS vulnerabilities
- Secret exposure
3. **Performance**
- N+1 queries
- Memory leaks
- Inefficient algorithms
4. **Best Practices**
- DRY principle
- SOLID principles
- Design patterns
Scénario de revue de code
Utilisateur : Reviewer cette PR
Agent : D'accord, je review la PR #123...
[Récupération des informations de la PR]
[Analyse des changements de code]
[Vérification des problèmes potentiels]
## Rapport de revue PR #123
### Vue d'ensemble
- Branche : feature/user-search
- Changements : +156 -23
- Fichiers : 8
### Problèmes détectés
**Critique** (1) :
- 🚨 `auth.js:45` - Risque de stockage de mot de passe en clair
**Avertissements** (3) :
- ⚠️ `search.js:23` - Injection SQL potentielle
- ⚠️ `user.js:78` - Promise non gérée
- ⚠️ `utils.js:12` - API obsolète
**Suggestions** (5) :
- 💡 Envisager l'ajout de tests unitaires
- 💡 Utiliser des constantes au lieu de nombres magiques
- 💡 Suggérer l'ajout de limites d'erreur
- 💡 Envisager d'extraire des méthodes communes
- 💡 Suggérer l'ajout d'annotations de type
### Points positifs
- ✅ Bon nommage des fonctions
- ✅ Découpage modulaire approprié
- ✅ Commentaires pertinents
Voulez-vous que je génère les commentaires de revue ?
Tests automatisés
Configuration de l’exécution des tests
{
"skills": {
"test-runner": {
"frameworks": ["jest", "vitest", "pytest"],
"coverage": {
"enabled": true,
"threshold": 80
},
"reporting": {
"format": "markdown",
"output": "test-report.md"
}
}
}
}
Scénario de test
Utilisateur : Exécuter les tests et rapporter les résultats
Agent : Exécution des tests en cours...
[Exécution des commandes de test]
[Collecte des résultats]
[Analyse de la couverture]
## Rapport de test
### Résultats des tests
- Total : 45 tests
- Réussis : 42 ✅
- Échoués : 2 ❌
- Ignorés : 1 ⏭️
### Tests échoués
**1. UserSearch.test.js**
AssertionError: expected [] to equal [{id: 1, name: ’test’}]
Suggestion : vérifier la connexion à la base de données ou les données mockées
**2. Auth.test.js**
Timeout: Async callback not invoked within 5000ms
Suggestion : augmenter le délai d'expiration ou vérifier la logique asynchrone
### Couverture
| Fichier | Instructions | Branches | Fonctions | Lignes |
|---------|-------------|----------|-----------|--------|
| auth.js | 85% | 78% | 90% | 85% |
| search.js | 72% | 65% | 80% | 70% |
| user.js | 90% | 85% | 95% | 90% |
| **Total** | **82%** | **76%** | **88%** | **82%** |
Voulez-vous que je corrige les tests échoués ?
Intégration CI/CD
Intégration GitHub Actions
# .github/workflows/openclaw-review.yml
name: OpenClaw Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup OpenClaw
run: npm install -g openclaw@latest
- name: Run Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
openclaw agent --message "Review PR #${{ github.event.pull_request.number }}" \
--output review-comment.md
- name: Post Comment
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const comment = fs.readFileSync('review-comment.md', 'utf8');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: comment
});
Déploiement automatique
Utilisateur : Déployer sur staging
Agent : Déploiement en cours sur l'environnement de staging...
[Récupération du dernier code]
[Exécution des tests]
[Build du projet]
[Déploiement sur le serveur]
## Rapport de déploiement
### Informations de déploiement
- Environnement : staging
- Branche : main
- Commit : abc1234
- Heure : 2026-02-26 15:30
### Étapes de déploiement
1. ✅ Récupération du code
2. ✅ Installation des dépendances
3. ✅ Exécution des tests (45/45 réussis)
4. ✅ Build du projet
5. ✅ Déploiement sur le serveur
### Vérification de santé
- API : ✅ Normal
- Base de données : ✅ Connexion normale
- Redis : ✅ Connexion normale
### Adresses d'accès
- URL : https://staging.example.com
- API : https://api-staging.example.com
Déploiement réussi !
Gestion multi-projets
Configuration des projets
{
"projects": {
"frontend": {
"path": "~/projects/frontend",
"skills": ["coding-agent", "test-runner"],
"context": "AGENTS.md"
},
"backend": {
"path": "~/projects/backend",
"skills": ["coding-agent", "docker-essentials"],
"context": "AGENTS.md"
},
"mobile": {
"path": "~/projects/mobile",
"skills": ["coding-agent"],
"context": "AGENTS.md"
}
}
}
Changement de projet
Utilisateur : Basculer sur le projet backend
Agent : Basculé sur le projet backend.
Informations du projet actuel :
- Nom : backend
- Chemin : ~/projects/backend
- Technologie : Python/FastAPI
- Dernier commit : Ajout de l'authentification utilisateur
Que puis-je faire pour vous ?
Génération de code
Générer du code standard
Utilisateur : Créer une API CRUD pour le modèle User
Agent : D'accord, je crée l'API CRUD pour le modèle User...
[Analyse de la structure de code existante]
[Génération des fichiers de code]
Fichiers générés :
**1. models/user.py**
```python
from pydantic import BaseModel
from datetime import datetime
class User(BaseModel):
id: int
name: str
email: str
created_at: datetime
updated_at: datetime
class UserCreate(BaseModel):
name: str
email: str
class UserUpdate(BaseModel):
name: str | None = None
email: str | None = None
2. routers/users.py
from fastapi import APIRouter, HTTPException
from models.user import User, UserCreate, UserUpdate
router = APIRouter(prefix="/users", tags=["users"])
@router.get("/", response_model=list[User])
async def list_users(): ...
@router.get("/{user_id}", response_model=User)
async def get_user(user_id: int): ...
@router.post("/", response_model=User)
async def create_user(user: UserCreate): ...
@router.put("/{user_id}", response_model=User)
async def update_user(user_id: int, user: UserUpdate): ...
@router.delete("/{user_id}")
async def delete_user(user_id: int): ...
3. tests/test_users.py
from fastapi.testclient import TestClient
def test_list_users(): ...
def test_create_user(): ...
def test_update_user(): ...
def test_delete_user(): ...
Voulez-vous que j’exécute les tests pour vérifier ?
## Génération de documentation
### Documentation API
Utilisateur : Générer la documentation pour cette API
Agent : Analyse des endpoints API en cours…
[Scan des fichiers de routes] [Extraction des informations API] [Génération de la documentation]
Documentation API
Module Utilisateurs
GET /users
Obtenir la liste des utilisateurs
Paramètres
| Nom | Type | Requis | Description |
|---|---|---|---|
| page | int | Non | Numéro de page |
| limit | int | Non | Nombre par page |
Réponse
{
"data": [User],
"total": int,
"page": int,
"limit": int
}
POST /users
Créer un utilisateur
Corps de la requête
{
"name": "string",
"email": "string"
}
Réponse
{
"id": 1,
"name": "string",
"email": "string",
"created_at": "2026-02-26T00:00:00Z",
"updated_at": "2026-02-26T00:00:00Z"
}
Enregistrer dans docs/api.md ?
## Dépannage
### Problèmes CI/CD
```bash
# Vérifier l'état CI/CD
openclaw ci status
# Voir les logs CI/CD
openclaw ci logs --last
# Relancer la tâche échouée
openclaw ci retry
Problèmes de code
# Analyser les problèmes de code
openclaw analyze --project backend
# Générer des suggestions de correction
openclaw suggest --file auth.js
Résumé
En construisant un assistant de programmation avec OpenClaw :
- Revue de code : automatisation de la revue des PR
- Exécution des tests : tests automatisés et rapports
- Intégration CI/CD : automatisation du processus de déploiement
- Gestion multi-projets : changement rapide de contexte
- Génération de code : code standard généré
- Génération de documentation : documentation API automatique
Historique des mises à jour :
- 2026-02-26 : Publication initiale
Navigation de la série :