From decab911bd0db5b80bf148db583406a7ca4cc23e Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 25 Feb 2022 09:55:04 +1100 Subject: [PATCH 1/9] Use relaxed Rubocop styleguide as basis We then refine it with our own rules. --- .rubocop.yml | 3 + .rubocop_relaxed_styleguide.yml | 153 ++++++++++++++++++++++++++++++++ .rubocop_styleguide.yml | 10 +++ 3 files changed, 166 insertions(+) create mode 100644 .rubocop_relaxed_styleguide.yml diff --git a/.rubocop.yml b/.rubocop.yml index 2d06208942..779460f826 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -10,6 +10,9 @@ inherit_from: # The automatically generated todo list to ignore all current violations. - .rubocop_todo.yml + # The relaxed style rules as a common starting point which we can refine. + - .rubocop_relaxed_styleguide.yml + # Our Open Food Network style guide. If you want to see all violations, # then use only that configuration: # diff --git a/.rubocop_relaxed_styleguide.yml b/.rubocop_relaxed_styleguide.yml new file mode 100644 index 0000000000..10f11931f1 --- /dev/null +++ b/.rubocop_relaxed_styleguide.yml @@ -0,0 +1,153 @@ +# Relaxed.Ruby.Style +## Version 2.5 + +Style/Alias: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylealias + +Style/AsciiComments: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleasciicomments + +Style/BeginBlock: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylebeginblock + +Style/BlockDelimiters: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleblockdelimiters + +Style/CommentAnnotation: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylecommentannotation + +Style/Documentation: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styledocumentation + +Layout/DotPosition: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#layoutdotposition + +Style/DoubleNegation: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styledoublenegation + +Style/EndBlock: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleendblock + +Style/FormatString: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleformatstring + +Style/IfUnlessModifier: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleifunlessmodifier + +Style/Lambda: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylelambda + +Style/ModuleFunction: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylemodulefunction + +Style/MultilineBlockChain: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylemultilineblockchain + +Style/NegatedIf: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylenegatedif + +Style/NegatedWhile: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylenegatedwhile + +Style/NumericPredicate: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylenumericpredicate + +Style/ParallelAssignment: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleparallelassignment + +Style/PercentLiteralDelimiters: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylepercentliteraldelimiters + +Style/PerlBackrefs: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleperlbackrefs + +Style/Semicolon: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylesemicolon + +Style/SignalException: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylesignalexception + +Style/SingleLineBlockParams: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylesinglelineblockparams + +Style/SingleLineMethods: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylesinglelinemethods + +Layout/SpaceBeforeBlockBraces: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#layoutspacebeforeblockbraces + +Layout/SpaceInsideParens: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#layoutspaceinsideparens + +Style/SpecialGlobalVars: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylespecialglobalvars + +Style/StringLiterals: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylestringliterals + +Style/TrailingCommaInArguments: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styletrailingcommainarguments + +Style/TrailingCommaInArrayLiteral: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styletrailingcommainarrayliteral + +Style/TrailingCommaInHashLiteral: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styletrailingcommainhashliteral + +Style/SymbolArray: + Enabled: false + StyleGuide: http://relaxed.ruby.style/#stylesymbolarray + +Style/WhileUntilModifier: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylewhileuntilmodifier + +Style/WordArray: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylewordarray + +Lint/AmbiguousRegexpLiteral: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#lintambiguousregexpliteral + +Lint/AssignmentInCondition: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#lintassignmentincondition + +Layout/LineLength: + Enabled: false + +Metrics: + Enabled: false + diff --git a/.rubocop_styleguide.yml b/.rubocop_styleguide.yml index 0840c14fc5..b6f0dd61e1 100644 --- a/.rubocop_styleguide.yml +++ b/.rubocop_styleguide.yml @@ -46,6 +46,7 @@ Layout/MultilineMethodCallIndentation: EnforcedStyle: indented Layout/LineLength: + Enabled: true Max: 100 Lint/RaiseException: @@ -187,9 +188,11 @@ Lint/AssignmentInCondition: StyleGuide: http://relaxed.ruby.style/#lintassignmentincondition Metrics/AbcSize: + Enabled: true Max: 15 Metrics/BlockLength: + Enabled: true Max: 25 IgnoredMethods: [ "class_eval", @@ -207,24 +210,31 @@ Metrics/BlockLength: ] Metrics/BlockNesting: + Enabled: true Max: 3 Metrics/ClassLength: + Enabled: true Max: 100 Metrics/ModuleLength: + Enabled: true Max: 100 Metrics/CyclomaticComplexity: + Enabled: true Max: 6 Metrics/MethodLength: + Enabled: true Max: 10 Metrics/ParameterLists: + Enabled: true Max: 5 Metrics/PerceivedComplexity: + Enabled: true Max: 7 Naming/PredicateName: From 1d15f35522096cda2b746f6fa262c0df956e9aa0 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 25 Feb 2022 10:46:51 +1100 Subject: [PATCH 2/9] Remove now unnecessary inline rubocop config --- app/models/spree/preferences/preferable.rb | 2 -- lib/open_food_network/xero_invoices_report.rb | 2 -- 2 files changed, 4 deletions(-) diff --git a/app/models/spree/preferences/preferable.rb b/app/models/spree/preferences/preferable.rb index b55b763ada..e6f992beaa 100644 --- a/app/models/spree/preferences/preferable.rb +++ b/app/models/spree/preferences/preferable.rb @@ -121,7 +121,6 @@ module Spree when :integer value.to_i when :boolean - # rubocop:disable Style/NumericPredicate if value.is_a?(FalseClass) || value.nil? || value == 0 || @@ -131,7 +130,6 @@ module Spree else true end - # rubocop:enable Style/NumericPredicate else value end diff --git a/lib/open_food_network/xero_invoices_report.rb b/lib/open_food_network/xero_invoices_report.rb index efbb43bb97..a874bd6047 100644 --- a/lib/open_food_network/xero_invoices_report.rb +++ b/lib/open_food_network/xero_invoices_report.rb @@ -143,9 +143,7 @@ module OpenFoodNetwork end def row(order, sku, description, quantity, amount, invoice_number, tax_type, opts = {}) - # rubocop:disable Style/NumericPredicate return nil if amount == 0 - # rubocop:enable Style/NumericPredicate [order.bill_address&.full_name, order.email, From b999673dfc0a79ba8c91a0073690d31a3f42e10a Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 25 Feb 2022 10:51:54 +1100 Subject: [PATCH 3/9] Remove old version of relaxed styled guide We had an old version under "contested settings" and it looks like some of them were modified. I hope that our new, separate file will discourage manual tweaks. We can include the relaxed rules from a gem as well. Let's see if we need that complexity one day. --- .rubocop_styleguide.yml | 111 ------------------ app/models/spree/gateway.rb | 2 +- app/models/spree/preferences/preferable.rb | 2 +- .../subscriptions/summarizer.rb | 4 +- lib/open_food_network/i18n_inflections.rb | 2 +- lib/open_food_network/permissions.rb | 13 +- 6 files changed, 11 insertions(+), 123 deletions(-) diff --git a/.rubocop_styleguide.yml b/.rubocop_styleguide.yml index b6f0dd61e1..2cb5fb13d0 100644 --- a/.rubocop_styleguide.yml +++ b/.rubocop_styleguide.yml @@ -76,117 +76,6 @@ Lint/UselessAssignment: Exclude: - spec/**/* -## Relaxed.Ruby.Style SETTINGS -# -# These styles are a starting point for the conversation around conventions -# They should be removed or tweaked and moved above as decisions are made -# NOTE: Cops which did not fail at the time of writing were removed - -Layout/DotPosition: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#styledotposition - -Layout/SpaceBeforeBlockBraces: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylespacebeforeblockbraces - -Layout/SpaceInsideParens: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylespaceinsideparens - -Style/Alias: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylealias - -Style/BlockDelimiters: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#styleblockdelimiters - -Style/CommentAnnotation: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylecommentannotation - -Style/DoubleNegation: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#styledoublenegation - -Style/FormatString: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#styleformatstring - -Style/HashEachMethods: - Enabled: false - -Style/HashTransformKeys: - Enabled: false - -Style/HashTransformValues: - Enabled: false - -Style/IfUnlessModifier: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#styleifunlessmodifier - -Style/Lambda: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylelambda - -Style/MultilineBlockChain: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylemultilineblockchain - -Style/NegatedIf: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylenegatedif - -Style/NegatedWhile: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylenegatedwhile - -Style/ParallelAssignment: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#styleparallelassignment - -Style/PercentLiteralDelimiters: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylepercentliteraldelimiters - -Style/Semicolon: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylesemicolon - -Style/SingleLineMethods: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylesinglelinemethods - -Style/TrailingCommaInArguments: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#styletrailingcommainarguments - -Style/TrailingCommaInArrayLiteral: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#styletrailingcommainliteral - -Style/TrailingCommaInHashLiteral: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#styletrailingcommainliteral - -Style/WordArray: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#stylewordarray - -Style/SymbolArray: - Enabled: false - StyleGuide: https://rubocop.readthedocs.io/en/latest/cops_style/#stylesymbolarray - -Lint/AmbiguousRegexpLiteral: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#lintambiguousregexpliteral - -Lint/AssignmentInCondition: - Enabled: false - StyleGuide: http://relaxed.ruby.style/#lintassignmentincondition - Metrics/AbcSize: Enabled: true Max: 15 diff --git a/app/models/spree/gateway.rb b/app/models/spree/gateway.rb index b28350cf1b..b205cfae69 100644 --- a/app/models/spree/gateway.rb +++ b/app/models/spree/gateway.rb @@ -35,7 +35,7 @@ module Spree end def options - preferences.each_with_object({}){ |(key, value), memo| memo[key.to_sym] = value; } + preferences.transform_keys(&:to_sym) end def method_missing(method, *args) diff --git a/app/models/spree/preferences/preferable.rb b/app/models/spree/preferences/preferable.rb index e6f992beaa..2c0f61b2e2 100644 --- a/app/models/spree/preferences/preferable.rb +++ b/app/models/spree/preferences/preferable.rb @@ -93,7 +93,7 @@ module Spree end def clear_preferences - preferences.keys.each { |pref| preference_store.delete preference_cache_key(pref) } + preferences.each_key { |pref| preference_store.delete preference_cache_key(pref) } end private diff --git a/engines/order_management/app/services/order_management/subscriptions/summarizer.rb b/engines/order_management/app/services/order_management/subscriptions/summarizer.rb index 32c925fc03..377ff12eae 100644 --- a/engines/order_management/app/services/order_management/subscriptions/summarizer.rb +++ b/engines/order_management/app/services/order_management/subscriptions/summarizer.rb @@ -41,14 +41,14 @@ module OrderManagement # This uses `deliver_now` since it's called from inside a job def send_placement_summary_emails - @summaries.values.each do |summary| + @summaries.each_value do |summary| SubscriptionMailer.placement_summary_email(summary).deliver_now end end # This uses `deliver_now` since it's called from inside a job def send_confirmation_summary_emails - @summaries.values.each do |summary| + @summaries.each_value do |summary| SubscriptionMailer.confirmation_summary_email(summary).deliver_now end end diff --git a/lib/open_food_network/i18n_inflections.rb b/lib/open_food_network/i18n_inflections.rb index 5919da4000..e8bb21001e 100644 --- a/lib/open_food_network/i18n_inflections.rb +++ b/lib/open_food_network/i18n_inflections.rb @@ -55,7 +55,7 @@ module OpenFoodNetwork def build_i18n_key_lookup lookup = {} I18n.t("inflections")&.each do |key, translations| - translations.values.each do |translation| + translations.each_value do |translation| lookup[translation.downcase] = key end end diff --git a/lib/open_food_network/permissions.rb b/lib/open_food_network/permissions.rb index a3ddb7f36e..47620b4d14 100644 --- a/lib/open_food_network/permissions.rb +++ b/lib/open_food_network/permissions.rb @@ -43,13 +43,12 @@ module OpenFoodNetwork hubs = variant_override_hubs # Permissions granted by create_variant_overrides relationship from producer to hub - permissions = Hash[ - EnterpriseRelationship. - permitting(hubs.select("enterprises.id")). - with_permission(:create_variant_overrides). - group_by(&:child_id). - map { |child_id, ers| [child_id, ers.map(&:parent_id)] } - ] + permissions = + EnterpriseRelationship. + permitting(hubs.select("enterprises.id")). + with_permission(:create_variant_overrides). + group_by(&:child_id). + transform_values { |ers| ers.map(&:parent_id) } # Allow a producer hub to override it's own products without explicit permission hubs.is_primary_producer.each do |hub| From 0c89479de4735460cc993e65d5b82666a9cfa6be Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 25 Feb 2022 11:05:36 +1100 Subject: [PATCH 4/9] Update rubocop todo list --- .rubocop_todo.yml | 42 +++++++----------------------------------- 1 file changed, 7 insertions(+), 35 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 4f11093dbf..49f7fe84e9 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400` -# on 2022-02-07 05:53:22 UTC using RuboCop version 1.22.2. +# on 2022-02-25 00:03:39 UTC using RuboCop version 1.22.2. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new @@ -53,7 +53,7 @@ Layout/LeadingCommentSpace: Exclude: - 'spec/system/admin/enterprises_spec.rb' -# Offense count: 815 +# Offense count: 828 # Cop supports --auto-correct. # Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. # URISchemes: http, https @@ -101,7 +101,6 @@ Layout/LineLength: - 'app/models/subscription.rb' - 'app/models/variant_override.rb' - 'app/serializers/api/admin/subscription_line_item_serializer.rb' - - 'app/serializers/api/admin/subscription_serializer.rb' - 'app/services/cart_service.rb' - 'app/services/checkout/post_checkout_actions.rb' - 'app/services/embedded_page_service.rb' @@ -251,7 +250,6 @@ Layout/LineLength: - 'spec/support/matchers/table_matchers.rb' - 'spec/support/request/stripe_stubs.rb' - 'spec/support/request/web_helper.rb' - - 'spec/swagger_helper.rb' - 'spec/system/admin/adjustments_spec.rb' - 'spec/system/admin/bulk_order_management_spec.rb' - 'spec/system/admin/bulk_product_update_spec.rb' @@ -405,7 +403,7 @@ Lint/UselessMethodDefinition: - 'app/controllers/spree/user_registrations_controller.rb' - 'app/models/spree/gateway.rb' -# Offense count: 261 +# Offense count: 263 # Configuration parameters: IgnoredMethods, CountRepeatedAttributes, Max. Metrics/AbcSize: Exclude: @@ -578,7 +576,7 @@ Metrics/AbcSize: - 'spec/system/consumer/shopping/shopping_spec.rb' - 'spec/system/consumer/shopping/variant_overrides_spec.rb' -# Offense count: 46 +# Offense count: 45 # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods. # IgnoredMethods: refine Metrics/BlockLength: @@ -608,7 +606,6 @@ Metrics/BlockLength: - 'spec/support/cancan_helper.rb' - 'spec/support/matchers/select2_matchers.rb' - 'spec/support/matchers/table_matchers.rb' - - 'spec/swagger_helper.rb' - 'spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb' - 'spec/system/consumer/shopping/checkout_spec.rb' @@ -735,7 +732,7 @@ Metrics/CyclomaticComplexity: - 'spec/models/product_importer_spec.rb' - 'spec/support/i18n_translations_checker.rb' -# Offense count: 258 +# Offense count: 260 # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods. Metrics/MethodLength: Exclude: @@ -972,12 +969,11 @@ Naming/HeredocDelimiterNaming: Exclude: - 'app/models/content_configuration.rb' -# Offense count: 6 +# Offense count: 5 # Configuration parameters: EnforcedStyleForLeadingUnderscores. # SupportedStylesForLeadingUnderscores: disallowed, required, optional Naming/MemoizedInstanceVariableName: Exclude: - - 'app/constraints/split_checkout_constraint.rb' - 'app/mailers/producer_mailer.rb' - 'app/models/concerns/balance.rb' - 'lib/open_food_network/address_finder.rb' @@ -1400,30 +1396,6 @@ Style/NestedModifier: - 'spec/system/admin/payments_stripe_spec.rb' - 'spec/system/admin/reports_spec.rb' -# Offense count: 31 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, IgnoredMethods. -# SupportedStyles: predicate, comparison -Style/NumericPredicate: - Exclude: - - 'app/controllers/spree/orders_controller.rb' - - 'app/helpers/checkout_helper.rb' - - 'app/helpers/shared_helper.rb' - - 'app/models/product_import/product_importer.rb' - - 'app/models/product_import/spreadsheet_entry.rb' - - 'app/models/spree/line_item.rb' - - 'app/models/spree/order.rb' - - 'app/models/spree/order_contents.rb' - - 'app/models/spree/order_inventory.rb' - - 'app/models/spree/user.rb' - - 'app/models/variant_override.rb' - - 'app/services/cart_service.rb' - - 'lib/open_food_network/customers_report.rb' - - 'lib/open_food_network/enterprise_fee_calculator.rb' - - 'lib/open_food_network/products_and_inventory_report_base.rb' - - 'lib/open_food_network/sales_tax_report.rb' - - 'lib/tasks/sample_data.rake' - # Offense count: 25 # Configuration parameters: AllowedMethods. # AllowedMethods: respond_to_missing? @@ -1467,7 +1439,7 @@ Style/RedundantReturn: Exclude: - 'app/controllers/spree/admin/shipping_methods_controller.rb' -# Offense count: 220 +# Offense count: 213 Style/Send: Exclude: - 'app/controllers/split_checkout_controller.rb' From 3382c1d0bbbd51a65721b84a065bdd56977caa42 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 25 Feb 2022 11:28:20 +1100 Subject: [PATCH 5/9] Relax some contested metrics rules Rubocop often complains while we think that the code is totally fine. I would like to achieve the default values one day but there are more important issues at the moment. --- .rubocop_styleguide.yml | 6 +- .rubocop_todo.yml | 291 +----------------- .../customer_totals_report.rb | 4 +- .../default_report.rb | 4 - .../supplier_totals_by_distributor_report.rb | 2 - .../supplier_totals_report.rb | 4 - 6 files changed, 8 insertions(+), 303 deletions(-) diff --git a/.rubocop_styleguide.yml b/.rubocop_styleguide.yml index 2cb5fb13d0..123e6272b6 100644 --- a/.rubocop_styleguide.yml +++ b/.rubocop_styleguide.yml @@ -78,7 +78,7 @@ Lint/UselessAssignment: Metrics/AbcSize: Enabled: true - Max: 15 + Max: 30 # default 17 Metrics/BlockLength: Enabled: true @@ -116,7 +116,7 @@ Metrics/CyclomaticComplexity: Metrics/MethodLength: Enabled: true - Max: 10 + Max: 25 # default 10 Metrics/ParameterLists: Enabled: true @@ -124,7 +124,7 @@ Metrics/ParameterLists: Metrics/PerceivedComplexity: Enabled: true - Max: 7 + Max: 14 # default 8 Naming/PredicateName: Enabled: false diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 49f7fe84e9..d0c9742a39 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400` -# on 2022-02-25 00:03:39 UTC using RuboCop version 1.22.2. +# on 2022-02-25 00:10:16 UTC using RuboCop version 1.22.2. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new @@ -403,178 +403,41 @@ Lint/UselessMethodDefinition: - 'app/controllers/spree/user_registrations_controller.rb' - 'app/models/spree/gateway.rb' -# Offense count: 263 +# Offense count: 39 # Configuration parameters: IgnoredMethods, CountRepeatedAttributes, Max. Metrics/AbcSize: Exclude: - - 'app/controllers/admin/bulk_line_items_controller.rb' - - 'app/controllers/admin/customers_controller.rb' - - 'app/controllers/admin/enterprise_fees_controller.rb' - 'app/controllers/admin/enterprises_controller.rb' - - 'app/controllers/admin/order_cycles_controller.rb' - - 'app/controllers/admin/product_import_controller.rb' - - 'app/controllers/admin/resource_controller.rb' - - 'app/controllers/admin/schedules_controller.rb' - - 'app/controllers/admin/stripe_accounts_controller.rb' - - 'app/controllers/admin/subscription_line_items_controller.rb' - - 'app/controllers/admin/subscriptions_controller.rb' - - 'app/controllers/api/v0/enterprises_controller.rb' - - 'app/controllers/api/v0/product_images_controller.rb' - - 'app/controllers/api/v0/products_controller.rb' - - 'app/controllers/api/v0/shipments_controller.rb' - - 'app/controllers/api/v0/taxons_controller.rb' - - 'app/controllers/api/v0/variants_controller.rb' - - 'app/controllers/checkout_controller.rb' - - 'app/controllers/concerns/order_completion.rb' - - 'app/controllers/discourse_sso_controller.rb' - - 'app/controllers/enterprises_controller.rb' - 'app/controllers/payment_gateways/paypal_controller.rb' - - 'app/controllers/payment_gateways/stripe_controller.rb' - - 'app/controllers/split_checkout_controller.rb' - - 'app/controllers/spree/admin/adjustments_controller.rb' - - 'app/controllers/spree/admin/general_settings_controller.rb' - - 'app/controllers/spree/admin/images_controller.rb' - - 'app/controllers/spree/admin/mail_methods_controller.rb' - - 'app/controllers/spree/admin/orders/customer_details_controller.rb' - 'app/controllers/spree/admin/orders_controller.rb' - - 'app/controllers/spree/admin/overview_controller.rb' - - 'app/controllers/spree/admin/payment_methods_controller.rb' - 'app/controllers/spree/admin/payments_controller.rb' - - 'app/controllers/spree/admin/products_controller.rb' - - 'app/controllers/spree/admin/reports_controller.rb' - - 'app/controllers/spree/admin/search_controller.rb' - - 'app/controllers/spree/admin/shipping_methods_controller.rb' - 'app/controllers/spree/admin/taxons_controller.rb' - - 'app/controllers/spree/admin/users_controller.rb' - 'app/controllers/spree/admin/variants_controller.rb' - - 'app/controllers/spree/credit_cards_controller.rb' - 'app/controllers/spree/orders_controller.rb' - - 'app/controllers/spree/user_sessions_controller.rb' - - 'app/controllers/spree/users_controller.rb' - - 'app/controllers/stripe/callbacks_controller.rb' - - 'app/controllers/user_confirmations_controller.rb' - - 'app/controllers/user_passwords_controller.rb' - - 'app/controllers/user_registrations_controller.rb' - - 'app/helpers/application_helper.rb' - 'app/helpers/checkout_helper.rb' - - 'app/helpers/order_cycles_helper.rb' - - 'app/helpers/spree/admin/base_helper.rb' - 'app/helpers/spree/admin/navigation_helper.rb' - - 'app/helpers/spree/admin/zones_helper.rb' - - 'app/helpers/spree/base_helper.rb' - - 'app/helpers/spree/orders_helper.rb' - - 'app/helpers/tax_helper.rb' - - 'app/mailers/producer_mailer.rb' - - 'app/mailers/spree/order_mailer.rb' - - 'app/models/calculator/flat_percent_per_item.rb' - - 'app/models/column_preference.rb' - - 'app/models/enterprise.rb' - 'app/models/enterprise_group.rb' - 'app/models/enterprise_relationship.rb' - - 'app/models/order_cycle.rb' - 'app/models/product_import/entry_processor.rb' - - 'app/models/product_import/entry_validator.rb' - - 'app/models/product_import/product_importer.rb' - - 'app/models/product_import/unit_converter.rb' - - 'app/models/proxy_order.rb' - 'app/models/spree/ability.rb' - 'app/models/spree/address.rb' - - 'app/models/spree/adjustment.rb' - - 'app/models/spree/gateway/pay_pal_express.rb' - - 'app/models/spree/image.rb' - - 'app/models/spree/item_adjustments.rb' - - 'app/models/spree/line_item.rb' - - 'app/models/spree/order.rb' - 'app/models/spree/order/checkout.rb' - - 'app/models/spree/order_inventory.rb' - - 'app/models/spree/payment.rb' - - 'app/models/spree/payment/processing.rb' - - 'app/models/spree/preference.rb' - - 'app/models/spree/preferences/preferable.rb' - 'app/models/spree/preferences/preferable_class_methods.rb' - - 'app/models/spree/product.rb' - 'app/models/spree/return_authorization.rb' - - 'app/models/spree/shipment.rb' - - 'app/models/spree/tax_rate.rb' - - 'app/models/spree/taxon.rb' - - 'app/models/spree/variant.rb' - - 'app/models/spree/zone.rb' - - 'app/serializers/api/admin/enterprise_serializer.rb' - - 'app/serializers/api/variant_serializer.rb' - - 'app/services/cap_quantity.rb' - - 'app/services/cart_service.rb' - - 'app/services/create_order_cycle.rb' - - 'app/services/order_cycle_form.rb' - - 'app/services/order_factory.rb' - - 'app/services/order_syncer.rb' - - 'app/services/place_proxy_order.rb' - - 'app/services/process_payment_intent.rb' - - 'app/services/products_renderer.rb' - - 'app/services/search_orders.rb' - - 'app/services/sets/model_set.rb' - - 'app/services/variant_units/option_value_namer.rb' - - 'app/services/variant_units/variant_and_line_item_naming.rb' - - 'app/services/variants_stock_levels.rb' - - 'engines/order_management/app/services/order_management/order/updater.rb' - 'engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb' - - 'engines/order_management/app/services/order_management/stock/estimator.rb' - - 'engines/order_management/app/services/order_management/stock/package.rb' - - 'engines/order_management/app/services/order_management/stock/packer.rb' - - 'engines/order_management/app/services/order_management/subscriptions/form.rb' - - 'engines/order_management/app/services/order_management/subscriptions/validator.rb' - - 'lib/active_merchant/billing/gateways/stripe_payment_intents_decorator.rb' - 'lib/discourse/single_sign_on.rb' - 'lib/open_food_network/customers_report.rb' - - 'lib/open_food_network/enterprise_fee_calculator.rb' - - 'lib/open_food_network/enterprise_issue_validator.rb' - 'lib/open_food_network/group_buy_report.rb' - - 'lib/open_food_network/lettuce_share_report.rb' - 'lib/open_food_network/order_and_distributor_report.rb' - 'lib/open_food_network/order_cycle_form_applicator.rb' - - 'lib/open_food_network/order_cycle_management_report.rb' - 'lib/open_food_network/order_cycle_permissions.rb' - - 'lib/open_food_network/order_grouper.rb' - - 'lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb' - 'lib/open_food_network/payments_report.rb' - - 'lib/open_food_network/permissions.rb' - - 'lib/open_food_network/products_and_inventory_report.rb' - - 'lib/open_food_network/reports/line_items.rb' - 'lib/open_food_network/sales_tax_report.rb' - - 'lib/open_food_network/users_and_enterprises_report.rb' - - 'lib/open_food_network/xero_invoices_report.rb' - - 'lib/reporting/queries/query_builder.rb' - - 'lib/reporting/reports/packing/base.rb' - 'lib/reporting/reports/packing/customer.rb' - - 'lib/reporting/reports/packing/supplier.rb' - - 'lib/session_cookie_upgrader.rb' - - 'lib/spree/api/controller_setup.rb' - - 'lib/spree/core/controller_helpers/auth.rb' - - 'lib/spree/core/controller_helpers/common.rb' - 'lib/spree/core/controller_helpers/order.rb' - - 'lib/spree/core/controller_helpers/respond_with.rb' - - 'lib/spree/core/delegate_belongs_to.rb' - - 'lib/spree/core/permalinks.rb' - - 'lib/spree/core/product_duplicator.rb' - 'lib/spree/core/s3_support.rb' - - 'lib/spree/localized_number.rb' - - 'lib/stripe/account_connector.rb' - - 'lib/stripe/authorize_response_patcher.rb' - - 'lib/stripe/profile_storer.rb' - 'lib/tasks/enterprises.rake' - - 'lib/tasks/sample_data/order_factory.rb' - - 'lib/tasks/sample_data/product_factory.rb' - - 'spec/controllers/api/v0/reports/packing_report_spec.rb' - - 'spec/models/enterprise_spec.rb' - - 'spec/models/product_importer_spec.rb' - 'spec/services/order_checkout_restart_spec.rb' - - 'spec/support/i18n_translations_checker.rb' - - 'spec/support/performance_helper.rb' - - 'spec/support/request/web_helper.rb' - - 'spec/system/admin/product_import_spec.rb' - - 'spec/system/admin/reports_spec.rb' - - 'spec/system/admin/subscriptions_spec.rb' - - 'spec/system/consumer/shopping/shopping_spec.rb' - - 'spec/system/consumer/shopping/variant_overrides_spec.rb' # Offense count: 45 # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods. @@ -732,146 +595,30 @@ Metrics/CyclomaticComplexity: - 'spec/models/product_importer_spec.rb' - 'spec/support/i18n_translations_checker.rb' -# Offense count: 260 +# Offense count: 31 # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods. Metrics/MethodLength: Exclude: - - 'app/controllers/admin/bulk_line_items_controller.rb' - - 'app/controllers/admin/contents_controller.rb' - - 'app/controllers/admin/customers_controller.rb' - - 'app/controllers/admin/enterprise_fees_controller.rb' - 'app/controllers/admin/enterprises_controller.rb' - - 'app/controllers/admin/manager_invitations_controller.rb' - - 'app/controllers/admin/order_cycles_controller.rb' - - 'app/controllers/admin/resource_controller.rb' - - 'app/controllers/admin/stripe_accounts_controller.rb' - - 'app/controllers/admin/subscriptions_controller.rb' - - 'app/controllers/api/v0/exchange_products_controller.rb' - - 'app/controllers/api/v0/product_images_controller.rb' - - 'app/controllers/api/v0/products_controller.rb' - - 'app/controllers/api/v0/shipments_controller.rb' - - 'app/controllers/api/v0/taxons_controller.rb' - - 'app/controllers/api/v0/variants_controller.rb' - - 'app/controllers/checkout_controller.rb' - - 'app/controllers/concerns/order_completion.rb' - 'app/controllers/payment_gateways/paypal_controller.rb' - - 'app/controllers/shop_controller.rb' - - 'app/controllers/split_checkout_controller.rb' - - 'app/controllers/spree/admin/orders/customer_details_controller.rb' - - 'app/controllers/spree/admin/orders_controller.rb' - - 'app/controllers/spree/admin/payment_methods_controller.rb' - - 'app/controllers/spree/admin/payments_controller.rb' - - 'app/controllers/spree/admin/products_controller.rb' - - 'app/controllers/spree/admin/reports_controller.rb' - - 'app/controllers/spree/admin/tax_categories_controller.rb' - 'app/controllers/spree/admin/taxons_controller.rb' - - 'app/controllers/spree/admin/users_controller.rb' - - 'app/controllers/spree/admin/variants_controller.rb' - - 'app/controllers/spree/credit_cards_controller.rb' - 'app/controllers/spree/orders_controller.rb' - - 'app/controllers/spree/user_sessions_controller.rb' - - 'app/controllers/spree/users_controller.rb' - - 'app/controllers/stripe/callbacks_controller.rb' - - 'app/controllers/user_confirmations_controller.rb' - - 'app/controllers/user_passwords_controller.rb' - - 'app/controllers/user_registrations_controller.rb' - - 'app/helpers/application_helper.rb' - 'app/helpers/checkout_helper.rb' - - 'app/helpers/order_cycles_helper.rb' - - 'app/helpers/spree/admin/base_helper.rb' - 'app/helpers/spree/admin/navigation_helper.rb' - - 'app/mailers/producer_mailer.rb' - - 'app/models/calculator/default_tax.rb' - - 'app/models/column_preference.rb' - - 'app/models/concerns/calculated_adjustments.rb' - - 'app/models/enterprise.rb' - - 'app/models/enterprise_relationship.rb' - - 'app/models/preference_sections/footer_and_external_links_section.rb' - - 'app/models/preference_sections/main_links_section.rb' - - 'app/models/product_import/entry_processor.rb' - - 'app/models/product_import/entry_validator.rb' - - 'app/models/product_import/product_importer.rb' - 'app/models/spree/ability.rb' - - 'app/models/spree/address.rb' - - 'app/models/spree/adjustment.rb' - - 'app/models/spree/credit_card.rb' - 'app/models/spree/gateway/pay_pal_express.rb' - - 'app/models/spree/order.rb' - 'app/models/spree/order/checkout.rb' - - 'app/models/spree/order_contents.rb' - - 'app/models/spree/order_inventory.rb' - 'app/models/spree/payment/processing.rb' - - 'app/models/spree/preference.rb' - - 'app/models/spree/preferences/preferable.rb' - 'app/models/spree/preferences/preferable_class_methods.rb' - - 'app/models/spree/preferences/store.rb' - - 'app/models/spree/product.rb' - - 'app/models/spree/return_authorization.rb' - - 'app/models/spree/shipment.rb' - - 'app/models/spree/tax_rate.rb' - - 'app/models/spree/taxon.rb' - - 'app/models/spree/zone.rb' - - 'app/serializers/api/admin/order_cycle_serializer.rb' - - 'app/serializers/api/cached_enterprise_serializer.rb' - - 'app/services/cart_service.rb' - - 'app/services/mail_configuration.rb' - - 'app/services/order_cycle_form.rb' - - 'app/services/permitted_attributes/checkout.rb' - - 'app/services/permitted_attributes/enterprise.rb' - - 'app/services/place_proxy_order.rb' - - 'app/services/process_payment_intent.rb' - - 'app/services/products_renderer.rb' - - 'app/services/variant_units/option_value_namer.rb' - - 'engines/order_management/app/services/order_management/order/updater.rb' - - 'engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_allocation_report.rb' - 'engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb' - - 'engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_supplier_report.rb' - 'engines/order_management/app/services/order_management/reports/enterprise_fee_summary/scope.rb' - - 'engines/order_management/app/services/order_management/stock/estimator.rb' - - 'engines/order_management/app/services/order_management/stock/package.rb' - - 'lib/active_merchant/billing/gateways/stripe_payment_intents_decorator.rb' - 'lib/discourse/single_sign_on.rb' - - 'lib/open_food_network/column_preference_defaults.rb' - - 'lib/open_food_network/customers_report.rb' - - 'lib/open_food_network/enterprise_fee_calculator.rb' - - 'lib/open_food_network/enterprise_issue_validator.rb' - - 'lib/open_food_network/group_buy_report.rb' - - 'lib/open_food_network/lettuce_share_report.rb' - - 'lib/open_food_network/order_and_distributor_report.rb' - 'lib/open_food_network/order_cycle_form_applicator.rb' - 'lib/open_food_network/order_cycle_management_report.rb' - 'lib/open_food_network/order_cycle_permissions.rb' - - 'lib/open_food_network/order_grouper.rb' - 'lib/open_food_network/payments_report.rb' - - 'lib/open_food_network/permissions.rb' - - 'lib/open_food_network/products_and_inventory_report.rb' - - 'lib/open_food_network/reports/line_items.rb' - - 'lib/open_food_network/sales_tax_report.rb' - - 'lib/open_food_network/users_and_enterprises_report.rb' - 'lib/open_food_network/xero_invoices_report.rb' - - 'lib/reporting/reports/packing/base.rb' - - 'lib/reporting/reports/packing/customer.rb' - - 'lib/reporting/reports/packing/supplier.rb' - - 'lib/session_cookie_upgrader.rb' - - 'lib/spree/api/controller_setup.rb' - - 'lib/spree/core/controller_helpers/order.rb' - - 'lib/spree/core/controller_helpers/respond_with.rb' - - 'lib/spree/core/delegate_belongs_to.rb' - - 'lib/spree/core/permalinks.rb' - - 'lib/spree/core/s3_support.rb' - - 'lib/spree/localized_number.rb' - - 'lib/spree/responder.rb' - - 'lib/stripe/credit_card_clone_finder.rb' - - 'lib/stripe/profile_storer.rb' - - 'lib/tasks/sample_data/group_factory.rb' - - 'lib/tasks/sample_data/order_factory.rb' - 'lib/tasks/sample_data/product_factory.rb' - - 'spec/controllers/api/v0/reports/packing_report_spec.rb' - - 'spec/models/product_importer_spec.rb' - - 'spec/support/i18n_translations_checker.rb' - - 'spec/support/request/checkout_request_helper.rb' - - 'spec/system/admin/reports_spec.rb' - - 'spec/system/consumer/shopping/variant_overrides_spec.rb' # Offense count: 20 # Configuration parameters: CountComments, Max, CountAsOne. @@ -908,48 +655,18 @@ Metrics/ParameterLists: - 'spec/support/controller_requests_helper.rb' - 'spec/system/admin/reports_spec.rb' -# Offense count: 45 +# Offense count: 8 # Configuration parameters: IgnoredMethods, Max. Metrics/PerceivedComplexity: Exclude: - - 'app/controllers/admin/enterprises_controller.rb' - - 'app/controllers/api/v0/variants_controller.rb' - - 'app/controllers/spree/admin/orders_controller.rb' - - 'app/controllers/spree/admin/payments_controller.rb' - 'app/controllers/spree/admin/taxons_controller.rb' - - 'app/controllers/spree/admin/users_controller.rb' - - 'app/controllers/spree/orders_controller.rb' - 'app/helpers/checkout_helper.rb' - - 'app/helpers/order_cycles_helper.rb' - - 'app/helpers/spree/admin/navigation_helper.rb' - 'app/models/enterprise_relationship.rb' - - 'app/models/product_import/entry_validator.rb' - 'app/models/spree/ability.rb' - - 'app/models/spree/address.rb' - 'app/models/spree/order/checkout.rb' - - 'app/models/spree/order_inventory.rb' - - 'app/models/spree/preferences/preferable.rb' - - 'app/models/spree/preferences/preferable_class_methods.rb' - - 'app/models/spree/product.rb' - - 'app/models/spree/return_authorization.rb' - - 'app/models/spree/tax_rate.rb' - - 'app/models/spree/variant.rb' - - 'app/models/spree/zone.rb' - - 'app/services/products_renderer.rb' - - 'app/services/sets/model_set.rb' - 'engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb' - - 'lib/discourse/single_sign_on.rb' - - 'lib/open_food_network/customers_report.rb' - - 'lib/open_food_network/enterprise_issue_validator.rb' - 'lib/open_food_network/group_buy_report.rb' - - 'lib/open_food_network/order_cycle_form_applicator.rb' - - 'lib/open_food_network/order_cycle_permissions.rb' - 'lib/open_food_network/payments_report.rb' - - 'lib/open_food_network/xero_invoices_report.rb' - - 'lib/spree/core/controller_helpers/order.rb' - - 'lib/spree/core/controller_helpers/respond_with.rb' - - 'lib/spree/localized_number.rb' - - 'spec/models/product_importer_spec.rb' # Offense count: 9 Naming/AccessorMethodName: diff --git a/lib/open_food_network/orders_and_fulfillments_report/customer_totals_report.rb b/lib/open_food_network/orders_and_fulfillments_report/customer_totals_report.rb index f012c25cd9..f65ad3a16f 100644 --- a/lib/open_food_network/orders_and_fulfillments_report/customer_totals_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report/customer_totals_report.rb @@ -17,7 +17,6 @@ module OpenFoodNetwork end # rubocop:disable Metrics/AbcSize - # rubocop:disable Metrics/MethodLength def header [I18n.t(:report_header_hub), I18n.t(:report_header_customer), I18n.t(:report_header_email), I18n.t(:report_header_phone), I18n.t(:report_header_producer), @@ -42,9 +41,8 @@ module OpenFoodNetwork I18n.t(:report_header_order_number), I18n.t(:report_header_date)] end - # rubocop:enable Metrics/AbcSize - # rubocop:enable Metrics/MethodLength + # rubocop:enable Metrics/AbcSize # rubocop:disable Metrics/AbcSize # rubocop:disable Metrics/MethodLength def rules diff --git a/lib/open_food_network/orders_and_fulfillments_report/default_report.rb b/lib/open_food_network/orders_and_fulfillments_report/default_report.rb index 9fd0efa6a0..3d10c9d7c4 100644 --- a/lib/open_food_network/orders_and_fulfillments_report/default_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report/default_report.rb @@ -22,7 +22,6 @@ module OpenFoodNetwork ] end - # rubocop:disable Metrics/MethodLength def rules [ { @@ -39,9 +38,7 @@ module OpenFoodNetwork } ] end - # rubocop:enable Metrics/MethodLength - # rubocop:disable Metrics/AbcSize def columns [ supplier_name, @@ -54,7 +51,6 @@ module OpenFoodNetwork proc { |_line_items| I18n.t(:report_header_incoming_transport) } ] end - # rubocop:enable Metrics/AbcSize def line_item_includes [] diff --git a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb index d294a514c6..404fd2eeb3 100644 --- a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb @@ -55,7 +55,6 @@ module OpenFoodNetwork # rubocop:enable Metrics/AbcSize # rubocop:enable Metrics/MethodLength - # rubocop:disable Metrics/AbcSize def columns [ supplier_name, @@ -68,7 +67,6 @@ module OpenFoodNetwork proc { |_line_items| I18n.t(:report_header_shipping_method) } ] end - # rubocop:enable Metrics/AbcSize def line_item_includes [{ order: :distributor, diff --git a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb index 60c11d93e0..9fd5f7fcf9 100644 --- a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb @@ -21,7 +21,6 @@ module OpenFoodNetwork I18n.t(:report_header_incoming_transport)] end - # rubocop:disable Metrics/MethodLength def rules [ { @@ -38,9 +37,7 @@ module OpenFoodNetwork } ] end - # rubocop:enable Metrics/MethodLength - # rubocop:disable Metrics/MethodLength def columns [ supplier_name, @@ -54,7 +51,6 @@ module OpenFoodNetwork proc { |_line_items| I18n.t(:report_header_incoming_transport) } ] end - # rubocop:enable Metrics/MethodLength def line_item_includes [{ variant: [{ option_values: :option_type }, { product: :supplier }] }] From 2d1e746c64847cb20ddd62732624c66f4b7c61e7 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 25 Feb 2022 11:51:35 +1100 Subject: [PATCH 6/9] Remove default values from contested settings We can just use what the Rubocop community uses as default and we don't need to spell it out again. --- .rubocop_styleguide.yml | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/.rubocop_styleguide.yml b/.rubocop_styleguide.yml index 123e6272b6..53d0605122 100644 --- a/.rubocop_styleguide.yml +++ b/.rubocop_styleguide.yml @@ -80,9 +80,10 @@ Metrics/AbcSize: Enabled: true Max: 30 # default 17 -Metrics/BlockLength: +Metrics: Enabled: true - Max: 25 + +Metrics/BlockLength: IgnoredMethods: [ "class_eval", "collection", @@ -98,30 +99,14 @@ Metrics/BlockLength: "shared_examples", ] -Metrics/BlockNesting: - Enabled: true - Max: 3 - -Metrics/ClassLength: - Enabled: true - Max: 100 - -Metrics/ModuleLength: - Enabled: true - Max: 100 - Metrics/CyclomaticComplexity: Enabled: true - Max: 6 + Max: 6 # default 7 Metrics/MethodLength: Enabled: true Max: 25 # default 10 -Metrics/ParameterLists: - Enabled: true - Max: 5 - Metrics/PerceivedComplexity: Enabled: true Max: 14 # default 8 From 7acae6522b840f5e7bda24362c4e91937ea41e44 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 25 Feb 2022 11:56:33 +1100 Subject: [PATCH 7/9] Relax cyclomatic complexity to community default Why should we be more strict than the rest of the world? --- .rubocop_styleguide.yml | 11 +++-------- .rubocop_todo.yml | 28 ++-------------------------- 2 files changed, 5 insertions(+), 34 deletions(-) diff --git a/.rubocop_styleguide.yml b/.rubocop_styleguide.yml index 53d0605122..af32a1de5a 100644 --- a/.rubocop_styleguide.yml +++ b/.rubocop_styleguide.yml @@ -19,6 +19,9 @@ AllCops: # # Cop settings that have been agreed upon by the OFN community +Metrics: + Enabled: true + Rails/SkipsModelValidations: AllowedMethods: - "touch" @@ -77,12 +80,8 @@ Lint/UselessAssignment: - spec/**/* Metrics/AbcSize: - Enabled: true Max: 30 # default 17 -Metrics: - Enabled: true - Metrics/BlockLength: IgnoredMethods: [ "class_eval", @@ -99,10 +98,6 @@ Metrics/BlockLength: "shared_examples", ] -Metrics/CyclomaticComplexity: - Enabled: true - Max: 6 # default 7 - Metrics/MethodLength: Enabled: true Max: 25 # default 10 diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index d0c9742a39..cf3c7a46ae 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400` -# on 2022-02-25 00:10:16 UTC using RuboCop version 1.22.2. +# on 2022-02-25 00:56:00 UTC using RuboCop version 1.22.2. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new @@ -532,68 +532,44 @@ Metrics/ClassLength: - 'lib/open_food_network/users_and_enterprises_report.rb' - 'lib/open_food_network/xero_invoices_report.rb' -# Offense count: 71 +# Offense count: 40 # Configuration parameters: IgnoredMethods, Max. Metrics/CyclomaticComplexity: Exclude: - - 'app/controllers/admin/enterprise_fees_controller.rb' - 'app/controllers/admin/enterprises_controller.rb' - - 'app/controllers/checkout_controller.rb' - 'app/controllers/spree/admin/orders_controller.rb' - - 'app/controllers/spree/admin/payment_methods_controller.rb' - - 'app/controllers/spree/admin/payments_controller.rb' - 'app/controllers/spree/admin/taxons_controller.rb' - - 'app/controllers/spree/admin/users_controller.rb' - 'app/controllers/spree/orders_controller.rb' - 'app/helpers/checkout_helper.rb' - 'app/helpers/order_cycles_helper.rb' - - 'app/helpers/spree/admin/base_helper.rb' - 'app/helpers/spree/admin/navigation_helper.rb' - - 'app/helpers/spree/admin/orders_helper.rb' - 'app/models/enterprise.rb' - 'app/models/enterprise_relationship.rb' - 'app/models/product_import/entry_validator.rb' - 'app/models/spree/ability.rb' - 'app/models/spree/address.rb' - - 'app/models/spree/adjustment.rb' - 'app/models/spree/order/checkout.rb' - 'app/models/spree/order_inventory.rb' - - 'app/models/spree/payment.rb' - 'app/models/spree/preference.rb' - 'app/models/spree/preferences/preferable.rb' - 'app/models/spree/preferences/preferable_class_methods.rb' - 'app/models/spree/product.rb' - 'app/models/spree/return_authorization.rb' - - 'app/models/spree/shipment.rb' - 'app/models/spree/tax_rate.rb' - 'app/models/spree/variant.rb' - 'app/models/spree/zone.rb' - - 'app/services/cart_service.rb' - - 'app/services/products_renderer.rb' - - 'app/services/sets/model_set.rb' - 'engines/order_management/app/services/order_management/reports/bulk_coop/bulk_coop_report.rb' - - 'engines/order_management/app/services/order_management/reports/enterprise_fee_summary/parameters.rb' - - 'engines/order_management/app/services/order_management/stock/estimator.rb' - - 'engines/order_management/app/services/order_management/subscriptions/validator.rb' - - 'lib/active_merchant/billing/gateways/stripe_payment_intents_decorator.rb' - 'lib/discourse/single_sign_on.rb' - 'lib/open_food_network/customers_report.rb' - 'lib/open_food_network/enterprise_issue_validator.rb' - 'lib/open_food_network/group_buy_report.rb' - - 'lib/open_food_network/order_cycle_form_applicator.rb' - - 'lib/open_food_network/order_cycle_permissions.rb' - 'lib/open_food_network/orders_and_fulfillments_report/customer_totals_report.rb' - 'lib/open_food_network/payments_report.rb' - - 'lib/open_food_network/sales_tax_report.rb' - 'lib/open_food_network/xero_invoices_report.rb' - - 'lib/spree/core/controller_helpers/common.rb' - 'lib/spree/core/controller_helpers/order.rb' - 'lib/spree/core/controller_helpers/respond_with.rb' - 'lib/spree/localized_number.rb' - - 'lib/stripe/authorize_response_patcher.rb' - - 'lib/stripe/credit_card_clone_destroyer.rb' - 'spec/models/product_importer_spec.rb' - - 'spec/support/i18n_translations_checker.rb' # Offense count: 31 # Configuration parameters: CountComments, Max, CountAsOne, ExcludedMethods, IgnoredMethods. From cee6a0f17f0d99317a0301344991a53269206619 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 25 Feb 2022 11:57:43 +1100 Subject: [PATCH 8/9] Declare blocklength rules as agreed upon The acceptance of this pull request will be the "agree" part. :-) --- .rubocop_styleguide.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.rubocop_styleguide.yml b/.rubocop_styleguide.yml index af32a1de5a..31e65d089b 100644 --- a/.rubocop_styleguide.yml +++ b/.rubocop_styleguide.yml @@ -22,6 +22,22 @@ AllCops: Metrics: Enabled: true +Metrics/BlockLength: + IgnoredMethods: [ + "class_eval", + "collection", + "context", + "describe", + "feature", + "it", + "member", + "namespace", + "resource", + "resources", + "scenario", + "shared_examples", + ] + Rails/SkipsModelValidations: AllowedMethods: - "touch" @@ -82,22 +98,6 @@ Lint/UselessAssignment: Metrics/AbcSize: Max: 30 # default 17 -Metrics/BlockLength: - IgnoredMethods: [ - "class_eval", - "collection", - "context", - "describe", - "feature", - "it", - "member", - "namespace", - "resource", - "resources", - "scenario", - "shared_examples", - ] - Metrics/MethodLength: Enabled: true Max: 25 # default 10 From e6b4f462ef8fd5027a5103e035f9084cb51f73b1 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 25 Feb 2022 10:02:31 +1100 Subject: [PATCH 9/9] Revert "Add rubocop config to allow specs to be 300 lines long" This reverts commit 0b51d8b2975cc60fc7ae6051262bf85bbbce07db. I think that this config was complicated in the setup and potentially confusing to have different rules in different places. It's better to fix those spec files by either making them smaller or removing the `module` block in the spec. We can reference the modules explicitely where needed. --- .rubocop_specs.yml | 7 ----- .rubocop_todo.yml | 35 ++++++++++++++++++++-- engines/catalog/spec/.rubocop.yml | 2 -- engines/dfc_provider/spec/.rubocop.yml | 2 -- engines/order_management/spec/.rubocop.yml | 2 -- engines/web/spec/.rubocop.yml | 2 -- spec/.rubocop.yml | 2 -- 7 files changed, 33 insertions(+), 19 deletions(-) delete mode 100644 .rubocop_specs.yml delete mode 100644 engines/catalog/spec/.rubocop.yml delete mode 100644 engines/dfc_provider/spec/.rubocop.yml delete mode 100644 engines/order_management/spec/.rubocop.yml delete mode 100644 engines/web/spec/.rubocop.yml delete mode 100644 spec/.rubocop.yml diff --git a/.rubocop_specs.yml b/.rubocop_specs.yml deleted file mode 100644 index 8ea54cd55c..0000000000 --- a/.rubocop_specs.yml +++ /dev/null @@ -1,7 +0,0 @@ -inherit_from: - - .rubocop.yml - -# This rubocop config file is only used for specs -# Here we allow specs to be 300 lines long -Metrics/ModuleLength: - Max: 300 diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index cf3c7a46ae..14cbe53446 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400` -# on 2022-02-25 00:56:00 UTC using RuboCop version 1.22.2. +# on 2022-02-25 01:04:47 UTC using RuboCop version 1.22.2. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new @@ -596,7 +596,7 @@ Metrics/MethodLength: - 'lib/open_food_network/xero_invoices_report.rb' - 'lib/tasks/sample_data/product_factory.rb' -# Offense count: 20 +# Offense count: 51 # Configuration parameters: CountComments, Max, CountAsOne. Metrics/ModuleLength: Exclude: @@ -608,18 +608,49 @@ Metrics/ModuleLength: - 'app/helpers/spree/admin/orders_helper.rb' - 'app/models/spree/order/checkout.rb' - 'app/models/spree/payment/processing.rb' + - 'engines/catalog/spec/services/catalog/product_import/products_reset_strategy_spec.rb' + - 'engines/order_management/spec/services/order_management/order/updater_spec.rb' + - 'engines/order_management/spec/services/order_management/stock/package_spec.rb' + - 'engines/order_management/spec/services/order_management/subscriptions/estimator_spec.rb' + - 'engines/order_management/spec/services/order_management/subscriptions/form_spec.rb' - 'engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb' + - 'engines/order_management/spec/services/order_management/subscriptions/summarizer_spec.rb' + - 'engines/order_management/spec/services/order_management/subscriptions/summary_spec.rb' - 'engines/order_management/spec/services/order_management/subscriptions/validator_spec.rb' + - 'engines/order_management/spec/services/order_management/subscriptions/variants_list_spec.rb' - 'lib/open_food_network/column_preference_defaults.rb' + - 'spec/controllers/admin/customers_controller_spec.rb' - 'spec/controllers/admin/order_cycles_controller_spec.rb' + - 'spec/controllers/api/v0/order_cycles_controller_spec.rb' - 'spec/controllers/api/v0/orders_controller_spec.rb' + - 'spec/controllers/payment_gateways/stripe_controller_spec.rb' + - 'spec/controllers/spree/admin/adjustments_controller_spec.rb' + - 'spec/controllers/spree/admin/payment_methods_controller_spec.rb' + - 'spec/lib/open_food_network/address_finder_spec.rb' + - 'spec/lib/open_food_network/customers_report_spec.rb' + - 'spec/lib/open_food_network/enterprise_fee_calculator_spec.rb' - 'spec/lib/open_food_network/order_cycle_form_applicator_spec.rb' + - 'spec/lib/open_food_network/order_cycle_management_report_spec.rb' - 'spec/lib/open_food_network/order_cycle_permissions_spec.rb' + - 'spec/lib/open_food_network/order_grouper_spec.rb' + - 'spec/lib/open_food_network/permissions_spec.rb' + - 'spec/lib/open_food_network/products_and_inventory_report_spec.rb' + - 'spec/lib/open_food_network/scope_variant_to_hub_spec.rb' + - 'spec/lib/open_food_network/tag_rule_applicator_spec.rb' + - 'spec/lib/open_food_network/users_and_enterprises_report_spec.rb' - 'spec/models/spree/adjustment_spec.rb' + - 'spec/models/spree/credit_card_spec.rb' - 'spec/models/spree/line_item_spec.rb' + - 'spec/models/spree/order/tax_spec.rb' - 'spec/models/spree/product_spec.rb' + - 'spec/models/spree/shipping_method_spec.rb' - 'spec/models/spree/tax_rate_spec.rb' - 'spec/models/spree/variant_spec.rb' + - 'spec/services/permissions/order_spec.rb' + - 'spec/services/variant_units/option_value_namer_spec.rb' + - 'spec/support/request/shop_workflow.rb' + - 'spec/support/request/stripe_stubs.rb' + - 'spec/support/request/web_helper.rb' # Offense count: 7 # Configuration parameters: Max, CountKeywordArgs, MaxOptionalParameters. diff --git a/engines/catalog/spec/.rubocop.yml b/engines/catalog/spec/.rubocop.yml deleted file mode 100644 index 26e3e2c99a..0000000000 --- a/engines/catalog/spec/.rubocop.yml +++ /dev/null @@ -1,2 +0,0 @@ -inherit_from: - - ../../../.rubocop_specs.yml diff --git a/engines/dfc_provider/spec/.rubocop.yml b/engines/dfc_provider/spec/.rubocop.yml deleted file mode 100644 index 26e3e2c99a..0000000000 --- a/engines/dfc_provider/spec/.rubocop.yml +++ /dev/null @@ -1,2 +0,0 @@ -inherit_from: - - ../../../.rubocop_specs.yml diff --git a/engines/order_management/spec/.rubocop.yml b/engines/order_management/spec/.rubocop.yml deleted file mode 100644 index 26e3e2c99a..0000000000 --- a/engines/order_management/spec/.rubocop.yml +++ /dev/null @@ -1,2 +0,0 @@ -inherit_from: - - ../../../.rubocop_specs.yml diff --git a/engines/web/spec/.rubocop.yml b/engines/web/spec/.rubocop.yml deleted file mode 100644 index 26e3e2c99a..0000000000 --- a/engines/web/spec/.rubocop.yml +++ /dev/null @@ -1,2 +0,0 @@ -inherit_from: - - ../../../.rubocop_specs.yml diff --git a/spec/.rubocop.yml b/spec/.rubocop.yml deleted file mode 100644 index 5d20d5e3d1..0000000000 --- a/spec/.rubocop.yml +++ /dev/null @@ -1,2 +0,0 @@ -inherit_from: - - ../.rubocop_specs.yml