Que vérifient les tests statiques?

8

Après avoir construit mon module, j'ai essayé de courir bin/magento dev:tests:run static.
Cela a signalé quelques problèmes avec mon code, mais je ne sais pas exactement ce qui est vérifié lors de l'exécution de ces tests.
La documentation officielle dit

L'analyse de code statique vérifie que le code PHP respecte les normes de codage et les meilleures pratiques de Magento 2. Ils sont généralement exécutés lors de l'intégration continue à l'aide de l'outil bin / magento.

Mais cela ne veut pas dire grand-chose.
Ce que j'ai trouvé jusqu'à présent, c'est.

  • présence de composer.json
  • présence de README.md
  • présence de licence.txt
  • l'ordre des arguments du constructeur correspond à l'ordre des arguments parent.

Quoi d'autre?

Marius
la source
@AnkitShah Pouvez-vous m'indiquer le paragraphe exact de la page que vous avez liée où il est dit que font les tests statiques?
Marius

Réponses:

6

bin/magento dev:tests:run static se déroulera:

  • Moins d'analyse de code statique: Generic.Files.EndFileNewline, Generic.Files.LineEndings, Generic.WhiteSpace.DisallowTabIndent, Squiz.CSS.NamedColours
  • Analyse de code statique Javascript: eslint, jshint
  • Vérification de la norme de codage PHP:
    1. Renvoie la liste blanche basée sur la liste noire et les fichiers modifiés par git
    2. Exécutez le code PSR2 renifle sur le code
    3. Exécutez les normes de codage spécifiques à Magento sur le code
    4. Exécutez les annotations renifle sur le code
    5. Exécuter le détecteur de dégâts sur le code
    6. Exécuter le détecteur de copier-coller sur le code
  • Tests d'intégrité du code:
    1. Construire les dépendances des modules
    2. Un test qui applique composer.lock est à jour avec composer.json
    3. Un test qui applique la validité des fichiers composer.json et de toute autre convention dans les composants Magento
    4. Test de compatibilité Hhvm
  • Test de sortie Xss dangereux:
    1. / * @noEscape * / avant la sortie. La sortie ne nécessite pas d'échappement. Le test est vert.
    2. / * @escapeNotVerified * / avant la sortie. L'échappement en sortie n'est pas vérifié et * doit être vérifié. Le test est vert.
    3. Méthodes contenant "html" dans leurs noms (par exemple echo $ object -> {suffix} Html {postfix} ()). * Les données sont prêtes pour la sortie HTML. Le test est vert.
    4. Les méthodes AbstractBlock escapeHtml, escapeUrl, escapeQuote, escapeXssInUrl sont autorisées. Le test est vert.
    5. La conversion de type et la fonction php count () sont autorisées * (par exemple echo (int) $ var, echo (float) $ var, echo (bool) $ var, echo count ($ var)). Le test est vert.
    6. Sortie entre guillemets simples (par exemple, en écho «du texte»). Le test est vert.
    7. Sortie entre guillemets doubles sans variables (par exemple, écho "du texte"). Le test est vert.
    8. Autre de p.1-7. La sortie n'est pas échappée. Le test est rouge.

Source: dev / tests / static / phpunit.xml.dist

Jonathan Ribas
la source
pouvez-vous ajouter quelques mots sur chacun s'il vous plait? Peut-être un exemple qui ne passe pas un test spécifique?
Marius
@Marius Je viens d'ajouter quelques mots pour chacun (je les ai tous pris du cœur), j'espère que cela aide.
Jonathan Ribas