Skip to content
代码片段 群组 项目
提交 4a7443c5 编辑于 作者: Kyle Edwards's avatar Kyle Edwards
浏览文件

Update RuboCop to find strong_memoize_with() without parameters

Some places are calling strong_memoize_with() without parameters. They
should be using strong_memoize_attr() instead. Update the RuboCop to
reflect this.
上级 4f14e574
No related branches found
No related tags found
无相关合并请求
---
# Cop supports --autocorrect.
Gitlab/StrongMemoizeAttr:
Details: grace period
Exclude:
- 'app/components/pajamas/avatar_component.rb'
- 'app/controllers/application_controller.rb'
......@@ -27,7 +28,6 @@ Gitlab/StrongMemoizeAttr:
- 'app/controllers/projects/incidents_controller.rb'
- 'app/controllers/projects/merge_requests/drafts_controller.rb'
- 'app/controllers/projects/merge_requests_controller.rb'
- 'app/controllers/projects/metrics_dashboard_controller.rb'
- 'app/controllers/projects/milestones_controller.rb'
- 'app/controllers/projects/pipelines/application_controller.rb'
- 'app/controllers/projects/pipelines_controller.rb'
......@@ -52,7 +52,6 @@ Gitlab/StrongMemoizeAttr:
- 'app/finders/merge_requests_finder/params.rb'
- 'app/finders/projects/members/effective_access_level_finder.rb'
- 'app/finders/releases/evidence_pipeline_finder.rb'
- 'app/finders/releases_finder.rb'
- 'app/finders/snippets_finder.rb'
- 'app/finders/todos_finder.rb'
- 'app/graphql/resolvers/issue_status_counts_resolver.rb'
......@@ -125,7 +124,6 @@ Gitlab/StrongMemoizeAttr:
- 'app/models/namespaces/traversal/linear.rb'
- 'app/models/namespaces/traversal/recursive.rb'
- 'app/models/note.rb'
- 'app/models/pages/lookup_path.rb'
- 'app/models/project.rb'
- 'app/models/release.rb'
- 'app/models/resource_event.rb'
......@@ -134,7 +132,6 @@ Gitlab/StrongMemoizeAttr:
- 'app/models/snippet_input_action_collection.rb'
- 'app/models/state_note.rb'
- 'app/models/tree.rb'
- 'app/models/uploads/fog.rb'
- 'app/models/user.rb'
- 'app/models/wiki_page.rb'
- 'app/models/work_item.rb'
......@@ -249,7 +246,6 @@ Gitlab/StrongMemoizeAttr:
- 'app/workers/merge_request_cleanup_refs_worker.rb'
- 'app/workers/packages/cleanup/execute_policy_worker.rb'
- 'app/workers/packages/debian/generate_distribution_worker.rb'
- 'app/workers/packages/debian/process_changes_worker.rb'
- 'app/workers/packages/maven/metadata/sync_worker.rb'
- 'app/workers/projects/inactive_projects_deletion_cron_worker.rb'
- 'ee/app/controllers/admin/audit_logs_controller.rb'
......@@ -283,10 +279,10 @@ Gitlab/StrongMemoizeAttr:
- 'ee/app/helpers/ee/preferences_helper.rb'
- 'ee/app/helpers/ee/registrations_helper.rb'
- 'ee/app/helpers/ee/timeboxes_helper.rb'
- 'ee/app/helpers/trials_helper.rb'
- 'ee/app/helpers/welcome_helper.rb'
- 'ee/app/helpers/license_monitoring_helper.rb'
- 'ee/app/helpers/subscriptions_helper.rb'
- 'ee/app/helpers/trials_helper.rb'
- 'ee/app/helpers/welcome_helper.rb'
- 'ee/app/models/approval_merge_request_rule.rb'
- 'ee/app/models/approval_state.rb'
- 'ee/app/models/approval_wrapped_any_approver_rule.rb'
......@@ -316,7 +312,6 @@ Gitlab/StrongMemoizeAttr:
- 'ee/app/models/ee/namespace.rb'
- 'ee/app/models/ee/project.rb'
- 'ee/app/models/ee/snippet.rb'
- 'ee/app/models/ee/user.rb'
- 'ee/app/models/ee/work_item.rb'
- 'ee/app/models/gitlab/seat_link_data.rb'
- 'ee/app/models/gitlab_subscription.rb'
......@@ -328,6 +323,7 @@ Gitlab/StrongMemoizeAttr:
- 'ee/app/models/vulnerabilities/finding.rb'
- 'ee/app/presenters/approval_rule_presenter.rb'
- 'ee/app/presenters/ci/minutes/usage_presenter.rb'
- 'ee/app/presenters/merge_request_approver_presenter.rb'
- 'ee/app/serializers/dashboard_operations_project_entity.rb'
- 'ee/app/serializers/ee/member_user_entity.rb'
- 'ee/app/services/app_sec/dast/pipelines/find_latest_service.rb'
......@@ -337,7 +333,6 @@ Gitlab/StrongMemoizeAttr:
- 'ee/app/services/ci/compare_license_scanning_reports_collapsed_service.rb'
- 'ee/app/services/ci/minutes/update_project_and_namespace_usage_service.rb'
- 'ee/app/services/ci/subscribe_bridge_service.rb'
- 'ee/app/services/ci/sync_reports_to_approval_rules_service.rb'
- 'ee/app/services/deployments/approval_service.rb'
- 'ee/app/services/ee/allowed_email_domains/update_service.rb'
- 'ee/app/services/ee/auto_merge_service.rb'
......@@ -388,13 +383,11 @@ Gitlab/StrongMemoizeAttr:
- 'ee/app/services/status_page/publish_service.rb'
- 'ee/app/services/status_page/trigger_publish_service.rb'
- 'ee/app/services/timebox_report_service.rb'
- 'ee/app/services/vulnerabilities/create_service.rb'
- 'ee/app/services/vulnerability_feedback/create_service.rb'
- 'ee/app/services/vulnerability_feedback/destroy_service.rb'
- 'ee/app/workers/auth/saml_group_sync_worker.rb'
- 'ee/app/workers/geo/repository_cleanup_worker.rb'
- 'ee/app/workers/geo/scheduler/scheduler_worker.rb'
- 'ee/app/workers/group_saml_group_sync_worker.rb'
- 'ee/app/workers/status_page/publish_worker.rb'
- 'ee/lib/api/analytics/project_deployment_frequency.rb'
- 'ee/lib/api/epic_links.rb'
......@@ -416,7 +409,6 @@ Gitlab/StrongMemoizeAttr:
- 'ee/lib/ee/gitlab/checks/diff_check.rb'
- 'ee/lib/ee/gitlab/ci/matching/runner_matcher.rb'
- 'ee/lib/ee/gitlab/ci/pipeline/chain/validate/external.rb'
- 'ee/lib/ee/gitlab/ci/pipeline/quota/activity.rb'
- 'ee/lib/ee/gitlab/ci/pipeline/quota/size.rb'
- 'ee/lib/ee/gitlab/etag_caching/router/rails.rb'
- 'ee/lib/ee/gitlab/git_access.rb'
......@@ -426,7 +418,6 @@ Gitlab/StrongMemoizeAttr:
- 'ee/lib/ee/gitlab/security/scan_configuration.rb'
- 'ee/lib/ee/gitlab/web_hooks/rate_limiter.rb'
- 'ee/lib/ee/sidebars/groups/menus/issues_menu.rb'
- 'ee/lib/ee/sidebars/groups/menus/settings_menu.rb'
- 'ee/lib/elastic/multi_version_util.rb'
- 'ee/lib/gitlab/auth/group_saml/auth_hash.rb'
- 'ee/lib/gitlab/auth/group_saml/membership_updater.rb'
......@@ -480,7 +471,6 @@ Gitlab/StrongMemoizeAttr:
- 'lib/atlassian/jira_connect/jwt/symmetric.rb'
- 'lib/banzai/filter/base_sanitization_filter.rb'
- 'lib/banzai/filter/custom_emoji_filter.rb'
- 'lib/banzai/filter/inline_metrics_redactor_filter.rb'
- 'lib/banzai/filter/issuable_reference_expansion_filter.rb'
- 'lib/banzai/filter/references/reference_cache.rb'
- 'lib/banzai/filter/repository_link_filter.rb'
......@@ -570,7 +560,6 @@ Gitlab/StrongMemoizeAttr:
- 'lib/gitlab/config/entry/composable_array.rb'
- 'lib/gitlab/config/loader/yaml.rb'
- 'lib/gitlab/conflict/file.rb'
- 'lib/gitlab/database/background_migration/health_status/indicators/write_ahead_log.rb'
- 'lib/gitlab/database/bulk_update.rb'
- 'lib/gitlab/database/load_balancing/srv_resolver.rb'
- 'lib/gitlab/database/metrics.rb'
......@@ -613,7 +602,6 @@ Gitlab/StrongMemoizeAttr:
- 'lib/gitlab/import_export/importer.rb'
- 'lib/gitlab/import_export/lfs_restorer.rb'
- 'lib/gitlab/import_export/project/sample/date_calculator.rb'
- 'lib/gitlab/import_export/project/tree_restorer.rb'
- 'lib/gitlab/inactive_projects_deletion_warning_tracker.rb'
- 'lib/gitlab/instrumentation/redis_base.rb'
- 'lib/gitlab/instrumentation/redis_payload.rb'
......
......@@ -34,11 +34,13 @@ module Gitlab
class StrongMemoizeAttr < RuboCop::Cop::Base
extend RuboCop::Cop::AutoCorrector
MSG = 'Use `strong_memoize_attr`, instead of using `strong_memoize` directly.'
STRONG_MEMOIZE_MSG = 'Use `strong_memoize_attr`, instead of using `strong_memoize` directly.'
STRONG_MEMOIZE_WITH_MSG =
'Use `strong_memoize_attr`, instead of using `strong_memoize_with` without parameters.'
def_node_matcher :strong_memoize?, <<~PATTERN
(block
$(send nil? :strong_memoize
$(send nil? {:strong_memoize | :strong_memoize_with}
(sym _)
)
(args)
......@@ -58,7 +60,14 @@ def on_block(node)
corrector = autocorrect_pure_definitions(node.parent, body) if node.parent.def_type?
add_offense(send_node, &corrector)
message = case send_node.method_name
when :strong_memoize
STRONG_MEMOIZE_MSG
when :strong_memoize_with
STRONG_MEMOIZE_WITH_MSG
end
add_offense(send_node, message: message, &corrector)
end
private
......
......@@ -100,4 +100,42 @@ def self.memoized_method
RUBY
end
end
context 'when strong_memoize_with() is called without parameters' do
it 'registers an offense and autocorrects' do
expect_offense(<<~RUBY)
class Foo
def memoized_method
strong_memoize_with(:memoized_method) do
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Use `strong_memoize_attr`, instead of using `strong_memoize_with` without parameters.
'This is a memoized method'
end
end
end
RUBY
expect_correction(<<~RUBY)
class Foo
def memoized_method
'This is a memoized method'
end
strong_memoize_attr :memoized_method
end
RUBY
end
end
context 'when strong_memoize_with() is called with parameters' do
it 'does not register an offense' do
expect_no_offenses(<<~RUBY)
class Foo
def memoized_method(param)
strong_memoize_with(:memoized_method, param) do
param.to_s
end
end
end
RUBY
end
end
end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册