Produits et versions concernés
- Adobe Commerce sur l’infrastructure cloud
- Adobe Commerce sur site
Que rechercher dans la révision du code
Style
Le style peut être testé automatiquement en exécutant l’inspection PhpStorm (voir ci-dessous).
Veillez à configurer PHPMD et PHPCS et à exécuter l’outil Coding Standard à partir de l’interface de ligne de commande (également ci-dessous). Il existe un certain chevauchement, mais les deux présentent également des tests uniques.
Convention et structure
Les révisions des conventions et de la structure sont effectuées manuellement.
- La fonctionnalité de classe est-elle limitée à une seule responsabilité ?
- La structure de répertoires a-t-elle un sens ?
- Fonctionnalités exécutées au bon niveau (serveur, client, CSS, JS, base de données, structure, infrastructure).
- Le contrôle de version est-il correct ?
- Le code a-t-il l’air non conventionnel ou est-il en train d’essayer de contourner un problème de la mauvaise manière ?
- La convention d’affectation des noms pour le nom du module, le nom du module et le nom du référentiel est-elle correctement appliquée ?
- Vérifiez que les styles CSS globaux sont appliqués de manière réfléchie et qu’ils ne sont pas surutilisés.
Complétude
Les révisions pour l’exhaustivité sont effectuées manuellement.
- Le code peut-il être activé ou désactivé par la configuration et tout le code nécessaire se comporte-t-il comme prévu ?
- Est-ce que toute la configuration mentionnée dans le ticket est présente ? Vérifiez la portée, le type de données, la validation, la traduction et les valeurs par défaut.
- La configuration est-elle toujours récupérée au niveau le plus bas possible (niveau d’affichage de la boutique, niveau du site web ou niveau global) ? La récupération de la configuration doit correspondre à la définition de la portée dans le fichier
system.xml
. - Tous les chemins dans le diagramme de flux de la spécification technique sont-ils pris en compte ? Toutes les autres spécifications techniques sont-elles couvertes ?
- Les listes de contrôle d’accès sont-elles définies pour la nouvelle fonctionnalité ?
- PhpDocs est-il clair ? Les messages de validation sont-ils clairs ?
- Le code est-il commenté ou le code de débogage s’affiche-t-il ?
Performances
Les révisions des performances sont effectuées manuellement, ce qui peut être aidé par l’exécution du code en cas de doute.
- Les requêtes sont-elles exécutées dans une boucle ? Cette boucle peut se trouver en dehors des fichiers modifiés.
- Pouvez-vous repérer n’importe quel attribut
cachable="false"
? Sont-elles correctement appliquées ?
Sécurité
Les révisions pour la sécurité sont effectuées manuellement, ce qui peut être aidé par la recherche de texte. Une partie de la vérification de sécurité est gérée par des tests automatisés.
- Les exceptions sont-elles consignées si nécessaire ? Les types d’exceptions appropriés sont-ils utilisés ?
- Les modules externes
around
peuvent-ils être évités ? - Les modules externes renvoient-ils les types de données corrects ?
- Pouvez-vous trouver des requêtes SQL brutes qui doivent être créées à l’aide de la couche d’abstraction de base de données ?
- Un nouveau type de données est-il exposé à tout type d’utilisateur, d’administrateur ou de frontal ? Cette exposition présente-t-elle un risque pour la sécurité ?
- Les données générées par l’utilisateur sont-elles validées ? Tout ce qui provient du navigateur est considéré comme généré par l’utilisateur, y compris les valeurs de cookie et les en-têtes de serveur.
Confidentialité et RGPD
Les révisions pour la confidentialité et le RGPD sont effectuées manuellement.
- Le code traite-t-il les données ou les e-mails des clients ? Faites attention.
- Si ce code peut être exécuté dans une boucle, peut-il laisser passer les données client d’un cycle de boucle à un autre ?
- Les indicateurs d’un risque sont les imports, les traitements cron, les emails transactionnels et les gestionnaires de file d’attente par lots.
- Veillez à l’isolation des données utilisateur dans les boucles. Adobe conseille d’utiliser des usines ou des référentiels pour créer des modèles dans le cycle de boucle, qui ne sont pas accessibles en dehors de la boucle.