Wikipédia:Filtro de edições/69

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Adição de texto após as categorias
Status
Registrando
Manutenção
Resumo
Ferramentas
Falsos positivos
Total 14
Lista Lista filtrada (com gadget)
(PS: futuramente, veremos os 5 mais recentes aqui mesmo)
Tarefas
A discussão a seguir está marcada como respondida (atualizado). Se quiser acrescentar mais algum comentário, coloque-o logo abaixo desta caixa.

Este filtro atualmente não tem ação nenhuma e está desatualizado em relação ao anglófono. Recomendo pelo menos atualizar o código conforme abaixo para monitorar impactos e posteriormente ativar as etiquetas (o correspondente anglófono é en:Special:AbuseFilter/351.

action == 'edit' &! 'autoconfirmed' in user_groups &
(article_namespace == 0 | article_namespace == 14) &
removed_lines rlike '^\[\[([a-z]{2,3}|Categor(?:y|ia)):.*\]\] *$' &
strpos(added_lines, removed_lines) == 0 &
(
  add := substr(added_lines, length(removed_lines));
  substr(new_wikitext, length(new_wikitext)+1-length(add)) + '\n' == add
  &! contains_any(add,'{{','[[')
)
& !(rcount("(^|\n)\s*\S",added_lines) = rcount("(^|\n)\[\[",added_lines))

O que acham?OTAVIO1981 (discussão) 17h09min de 24 de junho de 2013 (UTC)

Symbol support vote.svg Concordo, mas atualizei o código que colocou acima, para detectar tanto "Category" quanto "Categoria". Será preciso observar no campo de comentários que o filtro é uma adaptação tanto de en:Special:AbuseFilter/351 quanto de ru:Special:AbuseFilter/74. Helder 18h10min de 24 de junho de 2013 (UTC)
Sim, esqueci destes importantes detalhes. Agora como devemos proceder? pedimos aos administradores em WP:Pedidos/Outros?OTAVIO1981 (discussão) 18h25min de 24 de junho de 2013 (UTC)
Acredito que é só pedir lá mesmo. Helder 18h49min de 24 de junho de 2013 (UTC)
feito.—Teles«fale comigo» 07h59min de 2 de julho de 2013 (UTC)

Acho que o filtro não está mais funcionando, vejam.OTAVIO1981 (discussão) 12h30min de 1 de agosto de 2013 (UTC)

A primeira condição do filtro que é falsa naquela revisão é "removed_lines rlike '^\[\[([a-z]{2,3}|Categor(?:y|ia)):.*\]\] *$'" pois, como se pode ver ao examinar a revisão, string(removed_lines) === ''. Helder 20h33min de 4 de agosto de 2013 (UTC)
não detectou este caso OTAVIO1981 (discussão) 13h51min de 6 de agosto de 2013 (UTC)
Ao examinar a revisão vi que o motivo foi o mesmo do exemplo anterior: a lista de linhas removidas estava vazia. Helder 22h37min de 6 de agosto de 2013 (UTC)
Mais um caso não detectado.OTAVIO1981 (discussão) 11h27min de 8 de agosto de 2013 (UTC)

──────────────────────────────────────────────────────────────────────────────────────────────────── Em cada um dos três exemplos acima, a detecção não ocorre porque nem todos os testes são verdadeiros:

Condição Explicação informal Log 40153503 Log 40847377 Log 40877578 Log 40885295
removed_lines rlike '^\[\[([a-z]{2,3}|Categor(?:y|ia)):.*\]\] *$' A primeira linha da lista de removidas é uma categoria ou interwiki Não Não Não Não
strpos(added_lines, removed_lines) == 0 Todas as linhas removidas aparecem no início da lista de linhas adicionadas Não Não Não Não
add := substr(added_lines, length(removed_lines)); Nos dois testes a seguir, ignore as primeiras linhas adicionadas, pois pelo teste anterior coincidem com as removidas Sim Sim Sim Sim
substr(new_wikitext, length(new_wikitext)+1-length(add)) + '\n' == add As linhas que sobraram são as últimas da página
! contains_any(add,'{{','[[') Tais linhas não contém links nem predefinições
!(rcount("(^|\n)\s*\S",added_lines) = rcount("(^|\n)\[\[",added_lines)) Entre as linhas adicionadas, há tantas linhas começando com "[[" quantas forem as linhas contendo algo além de espaço(s) Sim Sim Sim Sim

Note, no entanto, que segundo o autor do código:

The code has to be this complicated because of the way the filter works when text is appended to the end, see mediazilla:20310, my comment #4. The last unchanged line is included in both removed_lines and added_lines, for example see this edit (Log 40885295) and these variables in the filter.

Helder 12h42min de 8 de agosto de 2013 (UTC)


Me deparei com este vandalismo (examinar) que não foi detectado pelo filtro.OTAVIO1981 (discussão) 20h43min de 19 de julho de 2013 (UTC)

A detecção falha no teste
strpos( added_lines, removed_lines ) == 0
e acredito que isso ocorre porque antes de testar se o segundo parâmetro é uma substring do primeiro a função strpos converte ambos para strings. Na revisão que citou, os seguintes testes são verdadeiros (note que o "\n" não aparece após o "]" na primeira string):
  1. string( added_lines )   === '[[Categoria:Municípios de São Paulo]] Brasil\n'
  2. string( removed_lines ) === '[[Categoria:Municípios de São Paulo]]\n'
Helder 18h42min de 25 de julho de 2013 (UTC)

Alguém traduz pra mim como esse filtro funciona? Tem alguns falso-positivos antigos, mas não sei se também seriam falso-positivos para essa versão. Rjclaudio msg 13h49min de 14 de agosto de 2013 (UTC)

Acrescentei uma descrição do que cada teste detecta. Isso ajuda? Helder 18h49min de 14 de agosto de 2013 (UTC)
Ajuda. Pq precisa do primeiro teste? Aí não reconhece os casos que se edita uma linha qualquer no texto e também adiciona texto no final do artigo. Se entendi direito.
Pela descrição e pela explicação logo depois (a do autor do código), não entendi pq o teste não é verdadeiro. Se 'a última linha não modificada' é adicionada na lista de linhas removidas (e adicionadas), então a primeira linha da lista de removidas deveria ser aquela linha com a categoria. O que há de errado?
Testei duas ocorrências do filtro, essa e essa lá na Wikipédia:Página de testes/1, e testei com o filtro atual. Não detectou nenhuma das duas. Tenho impressão que não detectaria as outras tb (a maioria). Tem certeza que o filtro está funcionando? Pode fazer um teste de uma situação que o filtro detectaria? Pq até agora só temos exemplos de casos que não detectaram. Ou talvez manter os dois códigos funcionando como complemento, pq pra um filtro que detectava praticamente 2 caso por dia ficar um mês e meio sem nada é bem estranho.
Rjclaudio msg 19h16min de 14 de agosto de 2013 (UTC)
Assim como nos dois primeiros exemplos citados pelo Otávio, a lista de linhas removidas na (minha réplica da) edição citada pelo autor está vazia, pelo menos na versão atual da extensão AbuseFilter. Suspeito que algo possa ter mudado na extensão desde que o autor criou o código desse filtro e, para variar, a alteração não foi documentada nem houve testes de regressão. A última detecção feita pelo filtro análogo da wiki em inglês foi em 11 de fevereiro.
Os dois testes que fez não foram detectados porque a categoria não estava na primeira linha removida. Helder 20h34min de 14 de agosto de 2013 (UTC)
Isso que pensei, esse filtro só funcionaria se a categoria estivesse na primeira linha. Então o código antigo funciona para casos que esse código novo não funciona. E vice-versa. Melhor manter dois filtros com os dois códigos, um com o novo e outro com o velho. Rjclaudio msg 01h18min de 15 de agosto de 2013 (UTC)
Eu ainda estou boiando no que se passa e vou levar tempo para entender. Pelo menos trago para conhecimento este caso que não foi disparado.OTAVIO1981 (discussão) 14h14min de 15 de agosto de 2013 (UTC)
Resumindo a situação: o código copiado da wiki.en funcionava, até +- fevereiro desse ano quando mudaram alguma coisa na extensão do Filtro de abusos, e aí o código quebrou. Como nós copiamos de lá, o nosso código também ficou quebrado.
Como vai ficar quebrado por um tempo, melhor reverter e voltarmos ao nosso código anterior, que não era perfeito mas ao menos funcionava. Rjclaudio msg 14h25min de 15 de agosto de 2013 (UTC)
Informei o problema na Wikipédia em inglês, pois talvez alguém saiba resolver (ou descubra como antes de nós). Helder 20h14min de 1 de setembro de 2013 (UTC)

Reverti para a versão de mar2010, já que o filtro não estava detectando nenhuma ocorrência. Como falei acima, os dois códigos (o nosso, e o importado da wiki.en) seriam complementos, então mesmo que arrumem o bug do código da wiki.en é melhor criar um outro filtro para isso. Rjclaudio msg 14h34min de 18 de agosto de 2013 (UTC)