¿Determinar automáticamente la versión mínima de WordPress requerida para un complemento?

22

Al desarrollar un complemento, ¿hay alguna forma de determinar automáticamente la versión mínima de WordPress que se requiere para ejecutarlo? Quiero asegurarme de que el Requiresencabezado sea preciso, pero verificar manualmente cada vez que llamo a una nueva función principal es tedioso y propenso a errores.

Estoy pensando que un guión podría resolverlo con bastante facilidad:

  1. Escanee todos los archivos en un complemento.
  2. Analizar todas las instancias de clase y llamadas a funciones basadas en el new foo( [...] ), foo::bar( [...] ), bar( [...] ), call_user_func( [...] ), etc sintaxis.
  3. Analice la fuente de WP para determinar cuándo se agregaron cada una de esas clases / funciones a WordPress, utilizando la @sinceetiqueta phpDoc.
  4. Genere un informe que enumere cada clase / función y la versión que se agregó, junto con la versión más antigua de WordPress que incluye todas las clases / funciones.

Miré a mi alrededor pero no pude encontrar nada parecido, y no tengo tiempo para escribirlo yo mismo. ¿Alguien sabe de una solución existente?

Ian Dunn
fuente
Sería un buen comienzo, gracias por señalarlo :)
Ian Dunn
@IanDunn Si pudo encontrar una solución a esto, por favor compártalos. :)
its_me
Todavía no he encontrado una solución.
Ian Dunn
2
Cuanto más pienso en esto, más parece que WordPress debería construir esto y ejecutarlo contra todos los complementos en el repositorio para que el número de versión sea exacto para todos los complementos para siempre.
mrwweb

Respuestas:

14

Encontré una solución como un servicio automatizado en http://wpseek.com/pluginfilecheck/

Es exactamente lo que se solicitó, incluida la generación de una lista de funciones utilizadas y una sugerencia para los comentarios del encabezado del complemento.

Carstenbach
fuente
Eso es genial, gracias :) Creo que sería mucho más conveniente si fuera un complemento de WordPress en sí mismo, en lugar de un servicio web, pero es mejor que nada.
Ian Dunn
2
Desafortunadamente, también es 'por archivo', por lo que no es necesario cargar un complemento completo. Pero sigue siendo un recurso muy útil: ¡gran descubrimiento!
Stephen Harris
2
Ese servicio ahora admite la carga de un archivo zip, y escaneará automáticamente todos los archivos que contiene :)
Ian Dunn
¿Hay alguna forma de agregar esto ( de.wpseek.com/pluginfilecheck ) u otra alternativa en el análisis estático del complemento durante la compilación para que no tenga que ir al sitio anterior para volver a verificar n nuevamente y el sistema de compilación lo hará generar automáticamente un informe junto con otros análisis estáticos en cada confirmación.
learning_13
3

Actualización: esto ya no es exacto. Ver la respuesta de carstenbach .


Bueno, parece que la respuesta es "No, no existe una solución para esto".

Si alguien quisiera escribir uno, estos podrían ser útiles:

Creo que el comentario de Mark sobre la creación de la característica en el repositorio de WordPress.org es una muy buena idea, pero puede ser algo que la comunidad tiene que crear primero para demostrar que es útil, antes de que el equipo central considere agregarlo.

Ian Dunn
fuente
2

Bueno, este es más un punto de partida, pero hay una buena lista de funciones de WP y las versiones que se agregaron / eliminaron aquí . Desafortunadamente, solo sube a WP 3.0.1, pero si está buscando 3.0 como línea de base, al menos ayudará; si no está en la lista, se agregó más tarde. Es posible que desee enviar un correo electrónico a Ozh y pedirle que actualice la lista, y si uno de nosotros recibe la confirmación, alguien puede hacer un complemento para verificar (como un verificador de desaprobación inversa ).

ETA: Per @mrwweb - ¡ Lista de ganchos de Adam Brown ! Actualiza a 3.3 y regresa muuuucho a 1.2.1, que nadie en su sano juicio ya estaría ejecutando (fecha de lanzamiento 6 de octubre de 2004).

SickHippie
fuente
2
Agregaría la lista de ganchos de Adam Brown por versión (¡de vuelta a 1.2.1!) Que también sería bueno comparar.
mrwweb
Gracias por el enlace al complemento Deprecation Checker, que podría proporcionar algún código útil para construir si alguna vez tengo tiempo para escribir esto.
Ian Dunn
Es un complemento brillante, del usuario de WPSE Brian Fegter.
SickHippie
0

Creo que la respuesta se encuentra en los avisos obsoletos: debe desarrollar con WP_DEBUG verdadero, ya sea que los muestre o registre es su llamada, pero WP le notificará si utiliza una función obsoleta.

Sería posible analizar @since como usted dice, pero las herramientas solo pueden llevarlo lejos: la familiaridad con la base de código y la verificación manual pueden ser el camino a seguir.

Chris Cox
fuente
1
Creo que respondiste lo contrario de la pregunta. La pregunta quiere determinar qué tan atrás se encuentra el soporte para las funciones que actualmente son compatibles (por ejemplo, una función que utiliza su complemento se introdujo en 3.1 para que su complemento no funcione en versiones anteriores, pero esa función no arroja un error o aviso porque es compatible ahora.)
mrwweb
Tienes razón, sírveme bien por publicar cansado. Entonces, lo que sugeriría es compararlo manualmente con la última versión principal y usarlo como un punto de partida arbitrario, porque es en el mejor interés de todos alentar a los usuarios a mantener su WP actualizado. Una vez que se ha establecido un punto de partida, los mensajes de confirmación son probablemente el mejor lugar para buscar para mantener actualizada la versión Requiere, ya que cualquier refactorización para evitar funciones y métodos obsoletos debe anotarse allí.
Chris Cox
Mirando wordpress.org/about/stats , diría que 3.2 es una buena versión para disparar, ya que cualquier versión anterior es estadísticamente insignificante.
Chris Cox
Gracias por las ideas Chris, pero el impulso principal aquí fue obtener una solución automatizada. Sin embargo, usted hace un buen punto acerca de que las versiones anteriores a la 3.2 son estadísticamente insignificantes.
Ian Dunn
Te haré un trato, avísame si te rindes y escribes uno, y te avisaré si llego a escribir uno. Es una buena idea y sería una herramienta útil en la caja de herramientas de cualquier persona.
Chris Cox