Determinar automaticamente a versão mínima do WordPress necessária para um plugin?

22

Ao desenvolver um plugin, existe uma maneira de determinar automaticamente a versão mínima do WordPress necessária para executá-lo? Quero garantir que o Requirescabeçalho seja preciso, mas verificar manualmente toda vez que chamo uma nova função principal é tedioso e propenso a erros.

Eu estou pensando que um script poderia descobrir com bastante facilidade:

  1. Analise todos os arquivos em um plugin.
  2. Analisar todas as instâncias de classe e chamadas de função com base no new foo( [...] ), foo::bar( [...] ), bar( [...] ), call_user_func( [...] ), etc sintaxe.
  3. Analise a fonte do WP para determinar quando cada uma dessas classes / funções foi adicionada ao WordPress, usando a @sincetag phpDoc.
  4. Gere um relatório listando cada classe / função e a versão que foi adicionada, juntamente com a versão mais antiga do WordPress, que inclui todas as classes / funções.

Olhei em volta, mas não consegui encontrar nada parecido, e não tenho tempo para escrevê-lo. Alguém sabe de uma solução existente?

Ian Dunn
fonte
Isso seria um bom começo, obrigado por apontar isso :)
Ian Dunn
@IanDunn Se você conseguiu encontrar uma solução para isso, compartilhe-a. :)
its_me
Ainda não encontrei uma solução.
11118 Ian
2
Quanto mais eu penso sobre isso, mais parece que o WordPress deve apenas criar isso e executá-lo em todos os plugins do repositório, para que o número da versão seja preciso para todos os plugins para sempre.
Mrwweb

Respostas:

14

Encontrei uma solução como serviço automatizado em http://wpseek.com/pluginfilecheck/

É exatamente o que foi solicitado, incluindo a geração da lista de funções usadas e uma sugestão para os comentários do Plugin-Header.

Carstenbach
fonte
Isso é muito legal, obrigado :) Eu acho que seria muito mais conveniente se fosse um plugin do WordPress, em vez de um serviço da web, mas é melhor do que nada.
Ian Dunn
2
Infelizmente, também é 'por arquivo' - portanto, não há upload de um plug-in inteiro. Mas ainda é um recurso muito útil - excelente descoberta!
Stephen Harris
2
Que o serviço agora suporta o upload de um arquivo zip, e ele vai verificar automaticamente todos os arquivos dentro dele :)
Ian Dunn
Existe alguma maneira de adicionar isso ( de.wpseek.com/pluginfilecheck ) ou outra alternativa na análise estática do plug-in durante a compilação, para que eu não precise ir ao site acima para verificar novamente n novamente e o sistema de compilação gerar automaticamente um relatório junto com outras análises estáticas em cada confirmação.
Aprendendo
3

Atualização: isso não é mais preciso. Veja a resposta de carstenbach .


Bem, parece que a resposta é "Não, não existe uma solução existente para isso".

Se alguém quiser escrever um, pode ser útil:

Eu acho que o comentário de Mark sobre a criação do recurso no repositório WordPress.org é uma idéia muito boa, mas pode ser algo que a comunidade precisa criar primeiro para provar que é útil, antes que a equipe principal considere adicioná-lo.

Ian Dunn
fonte
2

Bem, este é mais um ponto de partida, mas há uma boa lista de funções do WP e as versões em que foram adicionadas / removidas aqui . Infelizmente, ele só sobe para o WP 3.0.1, mas se você estiver usando o 3.0 como linha de base, isso ajudará pelo menos - se não estiver na lista, foi adicionado mais tarde. Você pode enviar um e-mail para Ozh e pedir que ele atualize a lista e, se um de nós entender, alguém pode criar um plug-in para verificar (como um verificador de reprovação reversa ).

ETA: Per @mrwweb - Lista de ganchos de Adam Brown ! Atual para 3.3 e volta para 1.2.1, que ninguém em sã consciência estaria executando mais (data de lançamento em 6 de outubro de 2004).

SickHippie
fonte
2
Eu acrescentaria a lista de ganchos de Adam Brown por versão (de volta à 1.2.1!), Que também seria uma boa opção.
Mrwweb
Obrigado pelo link para o plug-in Deprecation Checker, que pode fornecer algum código útil para construir, se eu tiver tempo para escrever isso.
Ian Dunn
Esse é um plugin brilhante, do usuário do WPSE Brian Fegter.
SickHippie
0

Eu acho que a resposta está nos avisos preteridos - você deve estar desenvolvendo com WP_DEBUG true - se você os exibe ou registra, é a sua chamada, mas o WP notificará você se você usar uma função preterida.

Seria possível analisar o @since como você diz, mas as ferramentas podem levá-lo tão longe - a familiaridade com a base de código e a verificação manual podem ser o caminho a percorrer.

Chris Cox
fonte
1
Eu acho que você respondeu o inverso da pergunta. A questão deseja determinar até que ponto o suporte retroativo vai para as funções atualmente suportadas (por exemplo, uma função que seu plug-in usa foi introduzida na 3.1, para que seu plug-in não funcione em versões anteriores, mas essa função não gera um erro ou aviso prévio porque é suportado agora.)
mrwweb
Você está certo, me sirva certo por postar cansado. O que eu sugeriria é verificar manualmente a última versão principal e usá-la como um ponto de partida arbitrário, porque é do interesse de todos incentivar os usuários a manter seu WP atualizado. Depois que um ponto de partida é estabelecido, as mensagens de confirmação são provavelmente o melhor local para manter a versão Requer atualizada, pois qualquer refatoração para evitar funções e métodos obsoletos deve ser anotada lá.
Chris Cox
Olhando para wordpress.org/about/stats, eu diria que a versão 3.2 é uma boa versão para atirar, pois qualquer versão anterior é estatisticamente insignificante.
22620 Chris Cox
Obrigado pelas idéias, Chris, mas o principal impulso aqui foi obter uma solução automatizada. Você faz um bom argumento sobre as versões anteriores à 3.2 serem estatisticamente insignificantes.
Ian Dunn
Farei um acordo para você - deixe-me saber se você desistir e escrever um e avisarei se eu escrever um. É uma boa ideia e seria uma ferramenta útil na caixa de ferramentas de qualquer pessoa.
Chris Cox