Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Lint/NoReturnInMemoization flags `return` in local variable `||=` and `&&=` assignments

Đang mở Phù hợp với người mới
#815 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

@RaphaelFakhri đang làm issue này rồi.

Từ ngày 22/10/2026.

  • #816 của @RaphaelFakhri — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
84/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
ruby
Lĩnh vực
tooling

Hướng nghiên cứu

Issue xác định on_or_asgn và bí danh on_and_asgn của nó là các điểm truy cập liên quan, đồng thời nêu các bài kiểm thử phép gán liên quan. Đọc phần triển khai cop và các bài kiểm thử đó, rồi bổ sung phạm vi kiểm thử cho các biến cục bộ được gán ||= và &&=. Chạy các bài kiểm thử cop tập trung; hoàn tất khi những trường hợp này không phát sinh lỗi vi phạm và hành vi hiện có của biến instance vẫn vượt qua kiểm thử.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
Ruby
Star
636
Fork
49
Merge trung bình
7 giờ 26 phút
Pull request đã merge (30 ngày)
3

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Shopify/ruby-style-guide

Tất cả issue của Shopify/ruby-style-guide

Issue tương tự

Thêm issue về Ruby

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.