Automattic / Automattic/VIP-Coding-Standards

Add sniff to delete_option() + add_option

Offen
#637 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Type: Enhancement
Vorherrschende Sprache
PHP
Sterne
261
Forks
44
Ø Merge
19 Min.
Gemergte PRs (30 T.)
1

Beschreibung

## 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?

```php
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).

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit nachzuverfolgen, wie bestehende PHP_CodeSniffer-Sniffs Aufrufe von delete_option() und add_option() darstellen, einschließlich ihres Scopes und des Umgangs mit Option-Keys. Als abgeschlossen gilt die Meldung übereinstimmender Aufrufe im selben Scope unter Ausschluss anderer Scopes oder Keys sowie der Vorschlag, update_option() zu verwenden; das Issue nennt keine Zieldatei und keinen Test.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php, wordpress
Bereich
tooling
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.