Lint/NoReturnInMemoization flags `return` in local variable `||=` and `&&=` assignments
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 84/100
Piste de recherche
L’issue identifie on_or_asgn et son alias on_and_asgn comme les points d’entrée concernés, et mentionne les tests d’affectation associés. Lis l’implémentation du cop et ces tests, puis ajoute des tests pour les variables locales auxquelles sont affectés ||= et &&=. Lance les tests ciblés du cop ; le travail est terminé lorsque ces cas ne produisent aucune infraction et que le comportement existant pour les variables d’instance passe toujours.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Lint/NoReturnInMemoization reports an offense for a return inside a begin..end block assigned to a local variable with ||= or &&=:
# frozen_string_literal: true
def foo
x ||= begin
return 1 if bar
2
end
x
end
$ bundle exec rubocop --only Lint/NoReturnInMemoization sample.rb
sample.rb:5:5: W: Lint/NoReturnInMemoization: Do not return in begin..end blocks in instance variable assignment contexts.
Expected behavior
No offense. The cop description and message cover instance variable assignment, and the cop already ignores the same code with x = begin ... end or x += begin ... end (see the test_returns_in_regular_assignment_are_not_offenses and test_returns_in_operation_assignment_for_instance_variable_are_not_offenses tests). A local variable goes out of scope when the method returns, so no memoized value is lost.
Cause
on_op_asgn returns early unless the target is an instance variable, but on_or_asgn (also aliased as on_and_asgn) checks every target.
Version: rubocop-shopify main (3.1.0), rubocop 1.92.0.
- Langage dominant
- Ruby
- Étoiles
- 638
- Forks
- 50
- Merge moyen
- 7 h 26 min
- PR mergées (30 j)
- 3
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Shopify/ruby-style-guide
-
Include reasoning in some rulesOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
Shopify/ruby-style-guide#190 · 1 réaction ·
Toutes les issues de Shopify/ruby-style-guide
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
[Bug] Chatwoot v4.19.0 – Super Admin returns 500 due to missing superadmin.scss Vite manifest entryOuverteBug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 2 jours
-
PRM baseline System 1 and 2 fans run continuously in unoccupied hours (low priority)Peut-être pris @anchapin l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
NatLabRockies/openstudio-standards#2167 ·
Les mainteneurs répondent en général sous 1 jour
-
Phone validation rejects valid numbers in new NANP area code 738 (phonelib 0.10.15 outdated)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
18F/identity-idp#13734 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Ubuntu 26.04: gems linking OpenSSL statically (e.g. rugged) fail to build – libjitterentropy3-dev missingPeut-être pris @BattleAurora l’a pris il y a 1 jour. OuverteArea: Ruby bug report needs triage OS: Ubuntu
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
actions/runner-images#15068 · 1 commentaire ·
Les mainteneurs répondent en général sous 3 jours