Add sniff to delete_option() + add_option

Aberta
#637 4 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

@rebeccahum já está trabalhando nisso.

Desde 31/3/2021.

  • #648 de @rebeccahum — aberto

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
php, wordpress
Domínio
tooling

Direção de pesquisa

Comece rastreando como os sniffs existentes do PHP_CodeSniffer representam chamadas a delete_option() e add_option(), incluindo o escopo e o tratamento das option-keys. Considera-se concluído relatar as chamadas correspondentes no mesmo escopo, excluindo escopos ou keys diferentes, e sugerir update_option(); a issue não nomeia um arquivo-alvo nem um teste.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Type: Enhancement

What problem would the enhancement address for VIP?

As explained at https://github.com/woocommerce/woocommerce/pull/27696 there is a race condition when delete_option('foo') is followed by add_option('foo', '...').

Describe the solution you'd like

Having a sniff that looked for a delete_option() call followed by an add_option() immediately
or at some point within the same scope, for the same option key, could flag this race condition and suggest using update_option() instead.

What code should be reported as a violation?

function reset_settings() {
	$defaults = get_default_settings();
	delete_option( 'my_settings' );
	add_option( 'my_settings', $defaults );
}

Likely to need some consideration of an option key that is using a variable.

What code should not be reported as a violation?

  • add_option() in a different scope.
  • different option key (including different variable).
Linguagem predominante
PHP
Estrelas
261
Forks
44
Merge médio
3d 9h
PRs com merge (30d)
10

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de Automattic/VIP-Coding-Standards

Todas as issues de Automattic/VIP-Coding-Standards

Issues semelhantes

Mais issues de PHP

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.