code-review

Effectue des revues de code en suivant les pratiques d'ingénierie de Sentry. À utiliser lors de la revue de pull requests, de l'examen de modifications de code ou de la fourniture de retours sur la qualité du code. Couvre la sécurité, la performance, les tests et la revue de conception.

npx skills add https://github.com/getsentry/skills --skill code-review

Sentry Code Review

Suivez ces directives lors de l'examen du code des projets Sentry.

Checklist d'examen

Identifier les problèmes

Recherchez ces problèmes dans les modifications de code :

  • Erreurs d'exécution : Exceptions potentielles, problèmes de pointeur null, dépassement de limites
  • Performance : Opérations O(n²) non bornées, requêtes N+1, allocations inutiles
  • Effets secondaires : Changements de comportement involontaires affectant d'autres composants
  • Compatibilité descendante : Changements d'API cassants sans chemin de migration
  • Requêtes ORM : Django ORM complexe avec performance de requête inattendue
  • Vulnérabilités de sécurité : Injection, XSS, lacunes de contrôle d'accès, exposition de secrets

Évaluation du design

  • Les interactions entre composants ont-elles du sens logiquement ?
  • Le changement s'aligne-t-il avec l'architecture existante du projet ?
  • Y a-t-il des conflits avec les exigences ou objectifs actuels ?

Couverture de test

Chaque PR doit avoir une couverture de test appropriée :

  • Tests fonctionnels pour la logique métier
  • Tests d'intégration pour les interactions entre composants
  • Tests end-to-end pour les chemins utilisateur critiques

Vérifiez que les tests couvrent les exigences réelles et les cas limites. Évitez les ramifications ou boucles excessives dans le code de test.

Impact à long terme

Signalez pour examen par un ingénieur senior quand les changements impliquent :

  • Modifications du schéma de base de données
  • Changements de contrat d'API
  • Adoption d'une nouvelle framework ou bibliothèque
  • Chemins de code critiques pour la performance
  • Fonctionnalité sensible à la sécurité

Directives de rétroaction

Ton

  • Soyez poli et empathique
  • Fournissez des suggestions actionnables, pas des critiques vagues
  • Formulez sous forme de questions quand vous êtes incertain : « Avez-vous envisagé... ? »

Approbation

  • Approuvez quand seuls des problèmes mineurs subsistent
  • Ne bloquez pas les PR pour des préférences stylistiques
  • Rappelez-vous : l'objectif est la réduction des risques, pas un code parfait

Motifs courants à signaler

Python/Django

# Bad: N+1 query
for user in users:
    print(user.profile.name)  # Separate query per user

# Good: Prefetch related
users = User.objects.prefetch_related('profile')

TypeScript/React

// Bad: Missing dependency in useEffect
useEffect(() => {
  fetchData(userId);
}, []);  // userId not in deps

// Good: Include all dependencies
useEffect(() => {
  fetchData(userId);
}, [userId]);

Sécurité

# Bad: SQL injection risk
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")

# Good: Parameterized query
cursor.execute("SELECT * FROM users WHERE id = %s", [user_id])

Références

Skills similaires