Enable Style/NumberedParameters disallowing use of _1
Description of the proposal
Enable Style/NumberedParameters
and disallow use of numbered parameters (_1
, _2
etc.). (
Previous proposal
Enable Style/NumberedParameters
and allow use of numbered parameters (_1
, _2
etc.) in single lines. (
1️⃣ Enable rule with EnforcedStyle: allow_single_line
Allow use of _1
but only on a single line.
# bad
collection.each do
puts _1
end
# good
collection.each { puts _1 }
collection.each do |item|
end
# still good
collection.each { |item| puts item }
Offenses in gitlab-org/gitlab
: 29482 files inspected, 4 offenses detected
Expand
Offenses:
app/models/hooks/web_hook.rb:196:5: C: Style/NumberedParameters: Avoid using numbered parameters for multi-line blocks.
url.gsub(VARIABLE_REFERENCE_RE) do ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/integration.rb:310:5: C: Style/NumberedParameters: Avoid using numbered parameters for multi-line blocks.
available_integration_names(include_project_specific: include_project_specific, include_dev: include_dev).map do ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/quick_actions/users_extractor.rb:53:19: C: Style/NumberedParameters: Avoid using numbered parameters for multi-line blocks.
missing = references.filter_map do ...
^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/integration_spec.rb:285:17: C: Style/NumberedParameters: Avoid using numbered parameters for multi-line blocks.
attrs = Integration.available_integration_types(include_project_specific: false).map do ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
29482 files inspected, 4 offenses detected
2️⃣ Enable rule with EnforcedStyle: disallow
Disallow the use of _1
and friends.
# bad
collection.each { puts _1 }
# good
collection.each { |item| puts item }
Offenses in gitlab-org/gitlab
: 29482 files inspected, 119 offenses detected
Expand
Offenses:
app/controllers/concerns/web_hooks/hook_actions.rb:60:28: C: Style/NumberedParameters: Avoid using numbered parameters.
ps[:url_variables] = ps[:url_variables].to_h { [_1[:key], _1[:value].presence] } if ps.key?(:url_variables)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/graphql_controller.rb:114:20: C: Style/NumberedParameters: Avoid using numbered parameters.
params[:_json].sum { _1[:query].size }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/import/bulk_imports_controller.rb:121:5: C: Style/NumberedParameters: Avoid using numbered parameters.
create_params.all? { _1[:source_type] == 'group_entity' }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/graphql/types/base_field.rb:30:7: C: Style/NumberedParameters: Avoid using numbered parameters.
after_connection_extensions.each { extension _1 } if after_connection_extensions.any?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/graphql/types/current_user_todos.rb:34:11: C: Style/NumberedParameters: Avoid using numbered parameters.
todos.each { _1.target = target } # prevent extra loads
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/graphql/types/design_management/design_fields.rb:85:24: C: Style/NumberedParameters: Avoid using numbered parameters.
by_version = ids.group_by(&:first).transform_values { _1.map(&:second) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/helpers/colors_helper.rb:15:9: C: Style/NumberedParameters: Avoid using numbered parameters.
"##{rgb_array.map{ "%02x" % _1 }.join}"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/helpers/colors_helper.rb:21:56: C: Style/NumberedParameters: Avoid using numbered parameters.
rgb_array.is_a?(Array) && rgb_array.length == 3 && rgb_array.all?{ _1 >= 0 && _1 <= 255 }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/helpers/hooks_helper.rb:7:40: C: Style/NumberedParameters: Avoid using numbered parameters.
url_variables: Gitlab::Json.dump(hook.url_variables.keys.map { { key: _1 } })
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/active_session.rb:265:5: C: Style/NumberedParameters: Avoid using numbered parameters.
raw_active_session_entries(redis, session_ids, user_id) ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/bulk_imports/entity.rb:104:5: C: Style/NumberedParameters: Avoid using numbered parameters.
pipelines.any? { _1[:pipeline].to_s == name.to_s }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/concerns/integrations/reset_secret_fields.rb:17:7: C: Style/NumberedParameters: Avoid using numbered parameters.
fields.select { _1.try(:exposes_secrets) }.pluck(:name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/hooks/web_hook.rb:196:5: C: Style/NumberedParameters: Avoid using numbered parameters.
url.gsub(VARIABLE_REFERENCE_RE) do ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/integration.rb:310:5: C: Style/NumberedParameters: Avoid using numbered parameters.
available_integration_names(include_project_specific: include_project_specific, include_dev: include_dev).map do ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/integration.rb:513:5: C: Style/NumberedParameters: Avoid using numbered parameters.
fields.reject { _1[:type] == 'password' }.pluck(:name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/integration.rb:517:5: C: Style/NumberedParameters: Avoid using numbered parameters.
fields.reject { _1[:api_only] == true }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/integrations/datadog.rb:202:14: C: Style/NumberedParameters: Avoid using numbered parameters.
unless datadog_tags.split("\n").select(&:present?).all? { _1 =~ TAG_KEY_VALUE_RE }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/integrations/youtrack.rb:36:7: C: Style/NumberedParameters: Avoid using numbered parameters.
super.select { _1.name.in?(%w[project_url issues_url]) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/project.rb:1610:5: C: Style/NumberedParameters: Avoid using numbered parameters.
Integration ...
^^^^^^^^^^^
app/models/project.rb:2991:7: C: Style/NumberedParameters: Avoid using numbered parameters.
links.select { Ability.allowed?(user, :read_group, _1.group) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/project.rb:3130:5: C: Style/NumberedParameters: Avoid using numbered parameters.
integrations.find { _1.to_param == name }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/import/gitlab_projects/create_project_service.rb:45:9: C: Style/NumberedParameters: Avoid using numbered parameters.
super.tap { _1.merge!(strategy.errors) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/merge_requests/update_service.rb:326:7: C: Style/NumberedParameters: Avoid using numbered parameters.
param.reject { _1 == 0 }
^^^^^^^^^^^^^^^^^^^^^^^^
app/services/packages/rpm/parse_package_service.rb:70:24: C: Style/NumberedParameters: Avoid using numbered parameters.
return [] if resource_keys.any? { package_tags[_1].blank? }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/packages/rpm/parse_package_service.rb:73:47: C: Style/NumberedParameters: Avoid using numbered parameters.
zipped_data = first_attributes.zip(*resource_keys[1..].map { package_tags[_1] })
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/packages/rpm/repository_metadata/update_xml_service.rb:54:13: C: Style/NumberedParameters: Avoid using numbered parameters.
xml.search("checksum:contains('#{data[:pkgid]}')").each { _1.parent&.remove }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/web_hooks/log_execution_service.rb:38:23: C: Style/NumberedParameters: Avoid using numbered parameters.
variables_map = hook.url_variables.invert.transform_values { "{#{_1}}" }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/app/models/ee/project.rb:1070:50: C: Style/NumberedParameters: Avoid using numbered parameters.
saml_providers = SamlProvider.where(group: links.map { _1.group.root_ancestor }).index_by(&:group_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/app/models/security/finding.rb:203:7: C: Style/NumberedParameters: Avoid using numbered parameters.
symbolized_finding_data[:remediation_byte_offsets].map { |offset| offset.values_at(:start_byte, :end_byte) } ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/app/models/slack_integration.rb:58:5: C: Style/NumberedParameters: Avoid using numbered parameters.
ALL_FEATURES.all? { feature_available?(_1) } # rubocop: disable Gitlab/FeatureAvailableUsage
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/app/models/slack_integration.rb:62:13: C: Style/NumberedParameters: Avoid using numbered parameters.
names = Array.wrap(names).flat_map { _1.split(',') }.map(&:strip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/app/models/vulnerabilities/feedback.rb:66:14: C: Style/NumberedParameters: Avoid using numbered parameters.
return feedback_by_uuid.tap { _1.assign_attributes(feedback_params) } if feedback_by_uuid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/app/models/vulnerabilities/feedback.rb:68:7: C: Style/NumberedParameters: Avoid using numbered parameters.
feedback_params.slice(:category, :feedback_type, :project_fingerprint) ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/app/services/security/ingestion/tasks/hooks_execution.rb:14:11: C: Style/NumberedParameters: Avoid using numbered parameters.
new_finding_maps.map(&:vulnerability_id) ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/app/services/security/ingestion/tasks/ingest_remediations.rb:86:11: C: Style/NumberedParameters: Avoid using numbered parameters.
new_report_remediations.find { _1.checksum == remediation.checksum }.then do |report_remediation|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/app/services/security/store_findings_service.rb:44:7: C: Style/NumberedParameters: Avoid using numbered parameters.
batch.map { finding_data(_1) } ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/gitlab/quick_actions/users_extractor.rb:14:11: C: Style/NumberedParameters: Avoid using numbered parameters.
references.reject { _1.start_with?('@') }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/gitlab/quick_actions/users_extractor.rb:24:47: C: Style/NumberedParameters: Avoid using numbered parameters.
groups = ::Group.where_full_path_in(references.map { _1.delete_prefix('@') })
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/lib/ee/gitlab/quick_actions/users_extractor.rb:26:26: C: Style/NumberedParameters: Avoid using numbered parameters.
super(users) + groups.map { _1.full_path.downcase }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/spec/lib/gitlab/quick_actions/users_extractor_spec.rb:23:7: C: Style/NumberedParameters: Avoid using numbered parameters.
[pancakes, waffles].each { group.add_developer(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/spec/models/vulnerabilities/statistic_spec.rb:43:7: C: Style/NumberedParameters: Avoid using numbered parameters.
%w[b c d f].each { create(:vulnerability_statistic, :"grade_#{_1}") }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/spec/services/quick_actions/interpret_service_spec.rb:187:13: C: Style/NumberedParameters: Avoid using numbered parameters.
group_members.each { group.add_developer(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ee/spec/services/security/ingestion/tasks/ingest_remediations_spec.rb:12:135: C: Style/NumberedParameters: Avoid using numbered parameters.
let(:existing_remediation_1) { create(:vulnerabilities_remediation, project: pipeline.project, checksum: existing_checksum, file: Tempfile.new.tap { _1.write(existing_diff) }, summary: 'Foo Summary') }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/entities/hook.rb:20:9: C: Style/NumberedParameters: Avoid using numbered parameters.
object.url_variables.keys.map { { key: _1 } }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/helpers/web_hooks_helpers.rb:32:41: C: Style/NumberedParameters: Avoid using numbered parameters.
hook_params[:url_variables] = url_variables.to_h { [_1[:key], _1[:value]] }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/helpers/web_hooks_helpers.rb:50:25: C: Style/NumberedParameters: Avoid using numbered parameters.
url_variables = url_variables.to_h { [_1[:key], _1[:value]] }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/api/hooks/url_variables.rb:35:18: C: Style/NumberedParameters: Avoid using numbered parameters.
vars = hook.url_variables.reject { _1 == key }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/error_tracking/sentry_client/issue.rb:109:9: C: Style/NumberedParameters: Avoid using numbered parameters.
issues.map { map_to_error(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/error_tracking/sentry_client/projects.rb:21:9: C: Style/NumberedParameters: Avoid using numbered parameters.
projects.map { map_to_project(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/error_tracking/sentry_client/repo.rb:26:9: C: Style/NumberedParameters: Avoid using numbered parameters.
repos.map { map_to_repo(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/feature.rb:120:22: C: Style/NumberedParameters: Avoid using numbered parameters.
return_value = with_feature(key) { _1.enable(thing) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/feature.rb:133:7: C: Style/NumberedParameters: Avoid using numbered parameters.
with_feature(key) { _1.disable(thing) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/feature.rb:142:7: C: Style/NumberedParameters: Avoid using numbered parameters.
with_feature(key) { _1.actors_value.include?(opt_out.flipper_id) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/feature.rb:151:7: C: Style/NumberedParameters: Avoid using numbered parameters.
with_feature(key) { _1.enable(opt_out) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/feature.rb:161:7: C: Style/NumberedParameters: Avoid using numbered parameters.
with_feature(key) { _1.disable(opt_out) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/color.rb:15:27: C: Style/NumberedParameters: Avoid using numbered parameters.
COLOR_NAME_TO_HEX = { ...
^
lib/gitlab/error_tracking/error_repository/open_api_strategy.rb:58:12: C: Style/NumberedParameters: Avoid using numbered parameters.
[errors.map { to_sentry_error(_1) }, pagination]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/error_tracking/error_repository/open_api_strategy.rb:173:29: C: Style/NumberedParameters: Avoid using numbered parameters.
pagination_hash = links.map { parse_pagination_link(_1) }.compact.to_h
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/github_import/representation/issue.rb:35:26: C: Style/NumberedParameters: Avoid using numbered parameters.
label_names: issue[:labels].map { _1[:name] },
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/pagination/keyset/order.rb:152:11: C: Style/NumberedParameters: Avoid using numbered parameters.
column_definitions ...
^^^^^^^^^^^^^^^^^^
lib/gitlab/quick_actions/users_extractor.rb:53:19: C: Style/NumberedParameters: Avoid using numbered parameters.
missing = references.filter_map do ...
^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/quick_actions/users_extractor.rb:71:9: C: Style/NumberedParameters: Avoid using numbered parameters.
references.map { _1.delete_prefix('@') }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/quick_actions/users_extractor.rb:78:11: C: Style/NumberedParameters: Avoid using numbered parameters.
refs.map! { _1.gsub(/\\_/, '_') }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/safe_request_loader.rb:51:16: C: Style/NumberedParameters: Avoid using numbered parameters.
absent = (missing_resource_ids - resource_data.keys).to_h { [_1, default_value] }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/usage_data_counters/ci_template_unique_counter.rb:53:9: C: Style/NumberedParameters: Avoid using numbered parameters.
results.uniq.sort_by { _1['name'] }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab/zentao/client.rb:106:15: C: Style/NumberedParameters: Avoid using numbered parameters.
ids = issues.map { _1['id'] }
^^^^^^^^^^^^^^^^^^^^^^^
lib/gitlab_edition.rb:18:5: C: Style/NumberedParameters: Avoid using numbered parameters.
path_prefixes.map! { "#{_1}/" }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/tasks/gitlab/usage_data.rake:69:7: C: Style/NumberedParameters: Avoid using numbered parameters.
Gitlab::UsageDataCounters::CiTemplateUniqueCounter ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/unnested_in_filters/rewriter.rb:47:9: C: Style/NumberedParameters: Avoid using numbered parameters.
values.map(&:value) ...
^^^^^^^^^^^^^^^^^^^
lib/unnested_in_filters/rewriter.rb:61:9: C: Style/NumberedParameters: Avoid using numbered parameters.
columns.find { _1.name == attribute }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/unnested_in_filters/rewriter.rb:183:7: C: Style/NumberedParameters: Avoid using numbered parameters.
model.from(from).then { add_relation_defaults(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/unnested_in_filters/rewriter.rb:187:7: C: Style/NumberedParameters: Avoid using numbered parameters.
model.where(model.primary_key => filter_query.select(model.primary_key)) ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lib/unnested_in_filters/rewriter.rb:232:7: C: Style/NumberedParameters: Avoid using numbered parameters.
where_clause_arel_nodes.select(&method(:in_predicate?)).select { model_column_names.include?(_1.left.name) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rubocop/check_graceful_task.rb:20:26: C: Style/NumberedParameters: Avoid using numbered parameters.
cop_names, paths = args.partition { available_cops.key?(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rubocop/cop/gitlab/namespaced_class.rb:42:27: C: Style/NumberedParameters: Avoid using numbered parameters.
PSEUDO_TOPLEVEL = %w[Gitlab] ...
^^^^^^^^^^
rubocop/cop/gitlab/namespaced_class.rb:52:11: C: Style/NumberedParameters: Avoid using numbered parameters.
add_potential_domain_namespace(node) { _1.pop }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rubocop/cop/graphql/enum_values.rb:65:21: C: Style/NumberedParameters: Avoid using numbered parameters.
return if params.any? { deprecated?(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rubocop/formatter/graceful_formatter.rb:25:46: C: Style/NumberedParameters: Avoid using numbered parameters.
silenced_offenses, active_offenses = offenses.partition { silenced?(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/graphql/resolvers/concerns/resolves_ids_spec.rb:28:17: C: Style/NumberedParameters: Avoid using numbered parameters.
let(:ids) { [7, 13, 21].map { global_id_of(model_name: 'User', id: _1) } }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/graphql/types/board_list_type_spec.rb:29:17: C: Style/NumberedParameters: Avoid using numbered parameters.
a, b, c = create_list(:list, 3).map { _1.class.find(_1.id) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/graphql/types/board_list_type_spec.rb:34:9: C: Style/NumberedParameters: Avoid using numbered parameters.
[resolve_field(field, b), resolve_field(field, c)].each { force _1 }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/graphql/types/current_user_todos_type_spec.rb:28:7: C: Style/NumberedParameters: Avoid using numbered parameters.
fresh_object_type('HasTodos').tap { _1.implements(Types::CurrentUserTodos) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/groups/stage_spec.rb:45:33: C: Style/NumberedParameters: Avoid using numbered parameters.
minimum_source_versions = pipelines.collect { _1[:minimum_source_version] }.flatten.compact
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/groups/stage_spec.rb:46:33: C: Style/NumberedParameters: Avoid using numbered parameters.
maximum_source_versions = pipelines.collect { _1[:maximum_source_version] }.flatten.compact
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/groups/stage_spec.rb:49:14: C: Style/NumberedParameters: Avoid using numbered parameters.
expect(minimum_source_versions.all? { version_regex =~ _1 }).to eq(true)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/groups/stage_spec.rb:50:14: C: Style/NumberedParameters: Avoid using numbered parameters.
expect(maximum_source_versions.all? { version_regex =~ _1 }).to eq(true)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/groups/stage_spec.rb:66:27: C: Style/NumberedParameters: Avoid using numbered parameters.
expected_stages = described_class.new(entity).pipelines.collect { _1[:stage] }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/projects/stage_spec.rb:32:33: C: Style/NumberedParameters: Avoid using numbered parameters.
minimum_source_versions = pipelines.collect { _1[:minimum_source_version] }.flatten.compact
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/projects/stage_spec.rb:33:33: C: Style/NumberedParameters: Avoid using numbered parameters.
maximum_source_versions = pipelines.collect { _1[:maximum_source_version] }.flatten.compact
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/projects/stage_spec.rb:36:14: C: Style/NumberedParameters: Avoid using numbered parameters.
expect(minimum_source_versions.all? { version_regex =~ _1 }).to eq(true)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/projects/stage_spec.rb:37:14: C: Style/NumberedParameters: Avoid using numbered parameters.
expect(maximum_source_versions.all? { version_regex =~ _1 }).to eq(true)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/bulk_imports/projects/stage_spec.rb:53:27: C: Style/NumberedParameters: Avoid using numbered parameters.
expected_stages = subject.pipelines.collect { _1[:stage] }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/gitlab/import_export/json/streaming_serializer_spec.rb:279:13: C: Style/NumberedParameters: Avoid using numbered parameters.
enumerator.each { _1 }
^^^^^^^^^^^^^^^^^^^^^^
spec/lib/gitlab/quick_actions/users_extractor_spec.rb:87:9: C: Style/NumberedParameters: Avoid using numbered parameters.
[pancakes, waffles].each { group.add_developer(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/gitlab/web_hooks/recursion_detection_spec.rb:216:7: C: Style/NumberedParameters: Avoid using numbered parameters.
registered_web_hooks.each { described_class.register!(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/lib/gitlab/zentao/client_spec.rb:191:35: C: Style/NumberedParameters: Avoid using numbered parameters.
issues_body = { issues: valid_ids.map { { id: _1 } } }.to_json
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/bulk_imports/entity_spec.rb:202:16: C: Style/NumberedParameters: Avoid using numbered parameters.
expect(entity.pipelines.collect { _1[:pipeline] }).to include(BulkImports::Groups::Pipelines::GroupPipeline)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/bulk_imports/entity_spec.rb:210:16: C: Style/NumberedParameters: Avoid using numbered parameters.
expect(entity.pipelines.collect { _1[:pipeline] }).to include(BulkImports::Projects::Pipelines::ProjectPipeline)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/hooks/web_hook_spec.rb:36:39: C: Style/NumberedParameters: Avoid using numbered parameters.
it { is_expected.to allow_value((1..20).to_h { ["k#{_1}", 'value'] }).for(:url_variables) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/hooks/web_hook_spec.rb:52:43: C: Style/NumberedParameters: Avoid using numbered parameters.
it { is_expected.not_to allow_value((1..21).to_h { ["k#{_1}", 'value'] }).for(:url_variables) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/integration_spec.rb:285:17: C: Style/NumberedParameters: Avoid using numbered parameters.
attrs = Integration.available_integration_types(include_project_specific: false).map do ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/models/integration_spec.rb:643:15: C: Style/NumberedParameters: Avoid using numbered parameters.
types = described_class.available_integration_names.map { described_class.integration_name_to_type(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/requests/api/graphql/mutations/issues/set_crm_contacts_spec.rb:18:23: C: Style/NumberedParameters: Avoid using numbered parameters.
let(:contact_ids) { mutation_contacts.map { global_id_of(_1) } }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/requests/api/graphql/project/merge_request_spec.rb:411:11: C: Style/NumberedParameters: Avoid using numbered parameters.
([user] + other_users).each { project.add_guest(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/requests/api/groups_spec.rb:843:38: C: Style/NumberedParameters: Avoid using numbered parameters.
subject(:shared_with_groups) { json_response['shared_with_groups'].map { _1['group_id']} }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/requests/recursive_webhook_detection_spec.rb:92:9: C: Style/NumberedParameters: Avoid using numbered parameters.
previous_hooks.each { Gitlab::WebHooks::RecursionDetection.register!(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/rubocop/cop/file_decompression_spec.rb:11:3: C: Style/NumberedParameters: Avoid using numbered parameters.
described_class::FORBIDDEN_COMMANDS.map { [_1, '^' * _1.length] }.each do |cmd, len|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/services/packages/rpm/repository_metadata/build_filelist_xml_service_spec.rb:31:26: C: Style/NumberedParameters: Avoid using numbered parameters.
directories: dirs.map { "#{_1}/" }, # Add trailing slash as in original package
^^^^^^^^^^^^^^^^^^^^^
spec/services/web_hook_service_spec.rb:277:7: C: Style/NumberedParameters: Avoid using numbered parameters.
previous_hooks.each { Gitlab::WebHooks::RecursionDetection.register!(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/services/web_hook_service_spec.rb:690:9: C: Style/NumberedParameters: Avoid using numbered parameters.
previous_hooks.each { Gitlab::WebHooks::RecursionDetection.register!(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/helpers/graphql_helpers.rb:362:12: C: Style/NumberedParameters: Avoid using numbered parameters.
return input.map { prepare_variables(_1) } if input.is_a?(Array)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/helpers/graphql_helpers.rb:849:5: C: Style/NumberedParameters: Avoid using numbered parameters.
attrs.transform_keys! { GraphqlHelpers.fieldnamerize(_1) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/matchers/exceed_query_limit.rb:14:7: C: Style/NumberedParameters: Avoid using numbered parameters.
combined_counts ...
^^^^^^^^^^^^^^^
spec/support/shared_contexts/features/integrations/integrations_shared_context.rb:19:7: C: Style/NumberedParameters: Avoid using numbered parameters.
integration_instance.fields.map { _1[:name].to_sym }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/shared_contexts/features/integrations/integrations_shared_context.rb:24:7: C: Style/NumberedParameters: Avoid using numbered parameters.
integration_instance.configurable_events.map { IntegrationsHelper.integration_event_field_name(_1).to_sym }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb:10:3: C: Style/NumberedParameters: Avoid using numbered parameters.
test_cases.filter { _1.delete('is_invalid') == invalid }.each_with_object({}) do |test_case, memo|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/shared_examples/integrations/integration_settings_form.rb:23:29: C: Style/NumberedParameters: Avoid using numbered parameters.
api_only_fields = integration.fields.select { _1[:api_only] }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support/shared_examples/requests/api/hooks_shared_examples.rb:42:5: C: Style/NumberedParameters: Avoid using numbered parameters.
event_names.to_h { [_1, true] }.merge(hook_param_overrides).merge(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/support_specs/helpers/active_record/query_recorder_spec.rb:77:12: C: Style/NumberedParameters: Avoid using numbered parameters.
expect(control.data.values.flat_map { _1[:durations] }).to match([be > 0, be > 0])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3️⃣ Disable rule
We don't care.
# bad
# none
# good
collection.each do
puts _1
end
collection.each { puts _1 }
collection.each do |item|
end
Prior discussion
See gitlab-org/gitlab!108572 (comment 1236244629)
Check-list
-
Mention this proposal in the relevant Slack channels (e.g. #development
,#backend
,#frontend
) -
If there is a choice to make between potential styles, set up an emoji vote in the MR. - Vote yourself for all choices so that people know these are the choices
-
The MR doesn't have significant objections, and is getting a majority of 👍 vs👎 (remember that we don't need to reach a consensus) -
(If applicable) One style is getting a majority of vote (compared to the other choice) -
(If applicable) Update the MR with the chosen style -
Follow the review process as usual
Edited by Peter Leitzen