Determinare automaticamente la versione minima di WordPress richiesta per un plug-in?


22

Quando si sviluppa un plug-in, esiste un modo per determinare automaticamente la versione minima di WordPress necessaria per eseguirlo? Voglio assicurarmi che l' Requiresintestazione sia accurata, ma controllare manualmente ogni volta che chiamo una nuova funzione principale è noioso e soggetto a errori.

Sto pensando che una sceneggiatura possa capirlo abbastanza facilmente:

  1. Scansiona tutti i file in un plugin.
  2. Analizzare tutte le istanze di classe e chiamate di funzione in base alla new foo( [...] ), foo::bar( [...] ), bar( [...] ), call_user_func( [...] ), ecc sintassi.
  3. Analizzare l'origine WP per determinare quando ciascuna di tali classi / funzioni è stata aggiunta a WordPress, utilizzando il @sincetag phpDoc.
  4. Genera un rapporto che elenca ogni classe / funzione e la versione che è stata aggiunta, insieme alla prima versione di WordPress che include tutte le classi / funzioni.

Mi sono guardato intorno ma non sono riuscito a trovare niente del genere e non ho tempo di scriverlo da solo. Qualcuno sa di una soluzione esistente?



Sarebbe un buon inizio, grazie per averlo sottolineato :)
Ian Dunn,

@IanDunn Se sei riuscito a trovare una soluzione a questo, ti preghiamo di condividerlo. :)
its_me

Non ho ancora trovato una soluzione.
Ian Dunn,

2
Più ci penso, più sembra che WordPress dovrebbe semplicemente crearlo ed eseguirlo su tutti i plug-in nel repository in modo che il numero di versione sia accurato per tutti i plug-in per sempre.
mrwweb,

Risposte:


14

Ho trovato una soluzione come servizio automatizzato su http://wpseek.com/pluginfilecheck/

Fa esattamente ciò che è stato richiesto, tra cui la generazione di un elenco di funzioni usate e un suggerimento per i commenti Plugin-Header.


È fantastico, grazie :) Penso che sarebbe molto più conveniente se fosse un plugin WordPress stesso, piuttosto che un servizio web, ma è meglio di niente.
Ian Dunn,

2
Sfortunatamente è anche 'per file' - quindi nessun caricamento di un intero plug-in. Ma è ancora una risorsa molto utile - grande scoperta!
Stephen Harris,

2
Quel servizio ora supporta il caricamento di un file zip e scansionerà automaticamente tutti i file al suo interno :)
Ian Dunn,

Esiste un modo per aggiungere questo ( de.wpseek.com/pluginfilecheck ) o un altro supplente nell'analisi statica del plug-in durante la compilazione in modo che non ho bisogno di andare al sito sopra per controllare di nuovo n e il sistema di compilazione sarà genera automaticamente un rapporto insieme ad altre analisi statiche su ogni commit.
learning_13

3

Aggiornamento: questo non è più preciso. Vedi la risposta di Carstenbach .


Bene, sembra che la risposta sia "No, non esiste una soluzione esistente per questo".

Se qualcuno volesse scriverne uno, questi potrebbero essere utili:

Penso che il commento di Mark sulla creazione della funzione nel repository WordPress.org sia davvero una buona idea, ma potrebbe essere qualcosa che la comunità deve creare prima per dimostrare che è utile, prima che il core team prenda in considerazione l'aggiunta.


2

Bene, questo è più un punto di partenza, ma c'è questa bella lista di funzioni WP e le versioni che sono state aggiunte / rimosse qui . Sfortunatamente, arriva solo a WP 3.0.1, ma se stai girando per 3.0 come base basterà almeno aiutare - se non è nella lista, è stato aggiunto in seguito. Potresti voler inviare un'e-mail a Ozh e chiedergli di aggiornare l'elenco, e se uno di noi ha l'impressione che qualcuno possa creare un plugin per controllare (come un correttore di deprecazione inversa ).

ETA: Per @mrwweb - Hook List di Adam Brown ! Corrente a 3.3 e risale alla 1.2.1, che nessuno nella sua mente giusta sarebbe più in esecuzione (data di rilascio 6 ottobre 2004).


2
Vorrei aggiungere l'elenco di hook di Adam Brown per versione (indietro alla 1.2.1!) Che sarebbe anche utile verificare.
mrwweb,

Grazie per il collegamento al plug-in Deprecation Checker, che potrebbe fornire un codice utile su cui basarsi se mai avessi il tempo di scrivere questo.
Ian Dunn,

È un plug-in geniale, dell'utente Brian Fegter WPSE.
SickHippie

0

Penso che la risposta risieda nelle notifiche deprecate - dovresti sviluppare con WP_DEBUG vero - se le visualizzi o le registri è la tua chiamata, ma WP ti avviserà se usi una funzione deprecata.

Sarebbe possibile analizzare @since come dici tu, ma gli strumenti possono portarti solo così lontano - la familiarità con la base di codice e il controllo manuale potrebbero essere la strada da percorrere.


1
Penso che tu abbia risposto all'inverso della domanda. La domanda vuole determinare fino a che punto arriva il supporto per le funzioni attualmente supportate (ad es. Una funzione utilizzata dal plug-in è stata introdotta in 3.1, quindi il plug-in non funziona nelle versioni precedenti, ma tale funzione non genera un errore o un avviso perché ora è supportato.)
mrwweb

Hai ragione, servimi bene per la pubblicazione stanca. Quindi ciò che suggerirei è di controllarlo manualmente con l'ultima versione principale e di usarlo come punto di partenza arbitrario, perché è nell'interesse di tutti incoraggiare gli utenti a mantenere aggiornato il proprio WP. Una volta stabilito un punto di partenza, i messaggi di commit sono probabilmente il posto migliore in cui cercare per mantenere aggiornata la versione di Requisito, poiché qualsiasi refactoring per evitare funzioni e metodi deprecati dovrebbe essere annotato lì.
Chris Cox,

Guardando wordpress.org/about/stats direi che 3.2 è una bella versione per cui sparare, dato che qualsiasi versione precedente è statisticamente insignificante.
Chris Cox,

Grazie per le idee Chris, ma la spinta principale qui è stata quella di ottenere una soluzione automatizzata. Tuttavia, fai notare che le versioni precedenti alla 3.2 sono statisticamente insignificanti.
Ian Dunn,

Ti farò un affare - fammi sapere se ti arrendi e ne scrivo uno e ti farò sapere se riesco a scriverne uno. È una buona idea e sarebbe uno strumento utile nella cassetta degli attrezzi di chiunque.
Chris Cox,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.