¿Qué están comprobando las pruebas estáticas?

8

Después de construir mi módulo, intenté ejecutarlo bin/magento dev:tests:run static.
Esto informó algunos problemas con mi código, pero no estoy seguro de qué se verifica exactamente al ejecutar estas pruebas.
La documentación oficial dice

El análisis de código estático verifica que el código PHP siga los estándares de codificación Magento 2 y las mejores prácticas. Por lo general, se ejecutan durante la integración continua utilizando la herramienta bin / magento.

Pero eso no significa mucho.
Lo que encontré hasta ahora es.

  • presencia de composer.json
  • presencia de README.md
  • presencia de licence.txt
  • El orden de los argumentos del constructor coincide con el orden principal de los argumentos.

¿Qué más?

Marius
fuente
@AnkitShah ¿Puedes señalarme el párrafo exacto en la página que vinculaste donde dice qué hacen las pruebas estáticas?
Marius

Respuestas:

6

bin/magento dev:tests:run static correrá:

  • Análisis de código menos estático: Generic.Files.EndFileNewline, Generic.Files.LineEndings, Generic.WhiteSpace.DisallowTabIndent, Squiz.CSS.NamedColours
  • Análisis de código estático de Javascript: eslint, jshint
  • Verificación estándar de codificación PHP:
    1. Devuelve la lista blanca según la lista negra y los archivos modificados
    2. Ejecute el código PSR2 olfatea el código
    3. Ejecute los estándares de codificación específicos de Magento en el código
    4. Ejecute las anotaciones olfatea en el código
    5. Ejecute el detector de desorden en el código
    6. Ejecute el detector de copiar y pegar en el código
  • Pruebas de integridad de código:
    1. Construir dependencias de módulos
    2. Una prueba que impone composer.lock está actualizada con composer.json
    3. Una prueba que impone la validez de los archivos composer.json y cualquier otra convención en los componentes de Magento
    4. Prueba de compatibilidad de Hhvm
  • Prueba de salida insegura de Xss:
    1. / * @noEscape * / antes de la salida. La salida no requiere escapar. La prueba es verde.
    2. / * @escapeNotVerified * / antes de la salida. La salida de escape no está marcada y * debe verificarse. La prueba es verde.
    3. Métodos que contienen "html" en sus nombres (por ejemplo, echo $ objeto -> {sufijo} Html {postfix} ()). * Los datos están listos para la salida HTML. La prueba es verde.
    4. Los métodos AbstractBlock escapeHtml, escapeUrl, escapeQuote, escapeXssInUrl están permitidos. La prueba es verde.
    5. Se permite la conversión de tipos y la función php count () * (por ejemplo, echo (int) $ var, echo (float) $ var, echo (bool) $ var, echo count ($ var)). La prueba es verde.
    6. Salida entre comillas simples (por ejemplo, echo 'algún texto'). La prueba es verde.
    7. Salida entre comillas dobles sin variables (por ejemplo, echo "algún texto"). La prueba es verde.
    8. Otros de p.1-7. La salida no se escapa. La prueba es roja.

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

Jonathan Ribas
fuente
¿Puedes agregar algunas palabras sobre cada una por favor? ¿Quizás un ejemplo que no pasa una prueba específica?
Marius
@Marius Acabo de agregar algunas palabras para cada una (las tomé todas del núcleo), espero que esto ayude.
Jonathan Ribas