diff --git a/Library/.rubocop.yml b/Library/.rubocop.yml index 7fb214b2f462be946eaadb8b6901079cbf4e0dac..32c51e0a76bd8f0a819a636059247040b139920c 100644 --- a/Library/.rubocop.yml +++ b/Library/.rubocop.yml @@ -2,11 +2,19 @@ require: ./Homebrew/rubocops.rb +inherit_mode: + merge: + - Include + - Exclude + AllCops: TargetRubyVersion: 2.6 DisplayCopNames: false # enable all pending rubocops NewCops: enable + Exclude: + - 'Homebrew/bin/*' + - 'Homebrew/**/vendor/**/*' Cask/Desc: Description: 'Ensure that the desc stanza conforms to various content and style checks.' @@ -44,10 +52,6 @@ FormulaAuditStrict: Layout/HeredocIndentation: Enabled: true -# Not useful in casks and formulae. -Metrics/BlockLength: - Enabled: false - # Keyword arguments don't have the same readability # problems as normal parameters. Metrics/ParameterLists: @@ -94,7 +98,8 @@ Style/HashTransformValues: # Allow for license expressions Style/HashAsLastArrayItem: - Enabled: false + Exclude: + - 'Taps/*/*/{Formula/,}*.rb' # Enabled now LineLength is lowish. Style/IfUnlessModifier: @@ -147,18 +152,21 @@ Performance/CaseWhenSplat: Performance/Caller: Enabled: false -# don't allow cops to be disabled in formulae +# Don't allow cops to be disabled in casks and formulae. Style/DisableCopsWithinSourceCodeDirective: Enabled: true + Include: + - 'Taps/*/*/{Formula/,Casks/,}*.rb' # make our hashes consistent Layout/HashAlignment: EnforcedHashRocketStyle: table EnforcedColonStyle: table -# `system` is a special case and aligns on second argument +# `system` is a special case and aligns on second argument, so allow this for formulae. Layout/ArgumentAlignment: - Enabled: false + Exclude: + - 'Taps/*/*/{Formula/,}*.rb' # this is a bit less "floaty" Layout/CaseIndentation: @@ -183,25 +191,62 @@ Lint/AmbiguousBlockAssociation: # so many of these in formulae and can't be autocorrected # TODO: fix these as `ruby -w` complains about them. Lint/AmbiguousRegexpLiteral: - Enabled: false + Exclude: + - 'Taps/*/*/{Formula/,}*.rb' # so many of these in formulae and can't be autocorrected Lint/ParenthesesAsGroupedExpression: - Enabled: false + Exclude: + - 'Taps/*/*/{Formula/,}*.rb' -# most metrics don't make sense to apply for formulae/taps +# Most metrics don't make sense to apply for casks/formulae/taps. Metrics/AbcSize: - Enabled: false + Exclude: + - 'Taps/**/*' +Metrics/BlockLength: + Exclude: + - 'Taps/**/*' Metrics/ClassLength: - Enabled: false + Exclude: + - 'Taps/**/*' Metrics/CyclomaticComplexity: - Enabled: false + Exclude: + - 'Taps/**/*' Metrics/MethodLength: - Enabled: false + Exclude: + - 'Taps/**/*' Metrics/ModuleLength: - Enabled: false + Exclude: + - 'Taps/**/*' Metrics/PerceivedComplexity: - Enabled: false + Exclude: + - 'Taps/**/*' + +# allow those that are standard +# TODO: try to remove some of these +Naming/MethodParameterName: + AllowedNames: + - '_' + - 'a' + - 'b' + - 'cc' + - 'c1' + - 'c2' + - 'd' + - 'e' + - 'f' + - 'ff' + - 'fn' + - 'id' + - 'io' + - 'o' + - 'p' + - 'pr' + - 'r' + - 'rb' + - 's' + - 'to' + - 'v' # GitHub diff UI wraps beyond 118 characters Layout/LineLength: @@ -214,6 +259,27 @@ Layout/LineLength: ' "~/Library/Application Support/', '"~/Library/Caches/', '"~/Application Support', ' was verified as official when first introduced to the cask'] +# Avoid false positives on modifiers used on symbols of methods +# See https://github.com/rubocop-hq/rubocop/issues/5953 +Style/AccessModifierDeclarations: + Enabled: false + +# don't group nicely documented or private attr_readers +Style/AccessorGrouping: + Exclude: + - 'Homebrew/formula.rb' + - 'Homebrew/formulary.rb' + - 'Homebrew/migrator.rb' + - 'Homebrew/resource.rb' + - 'Homebrew/system_command.rb' + - 'Homebrew/tap.rb' + +# make rspec formatting more flexible +Style/BlockDelimiters: + Exclude: + - 'Homebrew/**/*_spec.rb' + - 'Homebrew/**/shared_examples/**/*.rb' + # TODO: remove this when possible. Style/ClassVars: Exclude: @@ -221,11 +287,18 @@ Style/ClassVars: # Don't enforce documentation in casks or formulae. Style/Documentation: - Enabled: false + Exclude: + - 'Taps/**/*' + +Style/DocumentationMethod: + Include: + - 'Homebrew/formula.rb' # Not used for casks and formulae. Style/FrozenStringLiteralComment: - Enabled: false + EnforcedStyle: always + Exclude: + - 'Taps/*/*/{Formula/,Casks/,}*.rb' # TODO: remove this when possible. Style/GlobalVars: @@ -234,7 +307,8 @@ Style/GlobalVars: # potential for errors in formulae too high with this Style/GuardClause: - Enabled: false + Exclude: + - 'Taps/*/*/{Formula/,Casks/,}*.rb' # avoid hash rockets where possible Style/HashSyntax: @@ -242,7 +316,8 @@ Style/HashSyntax: # so many of these in formulae and can't be autocorrected Style/StringConcatenation: - Enabled: false + Exclude: + - 'Taps/*/*/{Formula/,Casks/,}*.rb' # ruby style guide favorite Style/StringLiterals: diff --git a/Library/.rubocop_cask.yml b/Library/.rubocop_cask.yml index 363cf3c79d77cfcb739a2f39962be6911520f502..d254773d73ae59a7ba508e0ea93f8763a90ca78a 100644 --- a/Library/.rubocop_cask.yml +++ b/Library/.rubocop_cask.yml @@ -1,4 +1,4 @@ # TODO: This file can be deleted once https://github.com/Homebrew/brew/pull/8542 # is in a stable release and `rubocop.yml` has been removed from all cask taps. -inherit_from: ./Homebrew/.rubocop.yml +inherit_from: ./.rubocop.yml diff --git a/Library/Homebrew/.rubocop.yml b/Library/Homebrew/.rubocop.yml index e280f0f62facb5d168872acdadfd5713f62a31b6..1cc3d8f3010a51c44068a42b68cee4387d0b46c6 100644 --- a/Library/Homebrew/.rubocop.yml +++ b/Library/Homebrew/.rubocop.yml @@ -2,27 +2,11 @@ inherit_from: - ../.rubocop_rspec.yml - .rubocop_todo.yml -AllCops: - Include: - - '**/*.rb' - - 'Library/Homebrew/.simplecov' - Exclude: - - 'bin/*' - - '**/vendor/**/*' - -# messes up system formatting for formulae but good for Homebrew/brew -Layout/ArgumentAlignment: - Enabled: true - # make rspec formatting more flexible Layout/MultilineMethodCallIndentation: Exclude: - '**/*_spec.rb' -# so many of these in formulae but none in here -Lint/AmbiguousRegexpLiteral: - Enabled: true - # TODO: add parentheses for these and remove Lint/AssignmentInCondition: Enabled: false @@ -32,123 +16,39 @@ Lint/NestedMethodDefinition: Exclude: - 'test/**/*' -# so many of these in formulae but none in here -Lint/ParenthesesAsGroupedExpression: - Enabled: true - -# TODO: try to bring down all metrics maximums +# TODO: Try to bring down all metrics maximums. Metrics/AbcSize: - Enabled: true Max: 250 Metrics/BlockLength: - Enabled: true Max: 100 Exclude: - 'test/**/*' Metrics/BlockNesting: - Enabled: true Max: 5 Metrics/ClassLength: - Enabled: true Max: 800 Exclude: - 'formula.rb' - 'formula_installer.rb' Metrics/CyclomaticComplexity: - Enabled: true Max: 80 +Metrics/PerceivedComplexity: + Max: 90 Metrics/MethodLength: - Enabled: true Max: 260 Metrics/ModuleLength: - Enabled: true Max: 600 Exclude: - 'test/**/*' -Metrics/PerceivedComplexity: - Enabled: true - Max: 90 -# we won't change backward compatible predicate names Naming/PredicateName: - Exclude: - - 'compat/**/*' - # can't rename these + # Can't rename these. AllowedMethods: is_32_bit?, is_64_bit? -# allow those that are standard -# TODO: try to remove some of these -Naming/MethodParameterName: - AllowedNames: - - '_' - - 'a' - - 'b' - - 'cc' - - 'c1' - - 'c2' - - 'd' - - 'e' - - 'f' - - 'ff' - - 'fn' - - 'id' - - 'io' - - 'o' - - 'p' - - 'pr' - - 'r' - - 'rb' - - 's' - - 'to' - - 'v' - -# Avoid false positives on modifiers used on symbols of methods -# See https://github.com/rubocop-hq/rubocop/issues/5953 -Style/AccessModifierDeclarations: - Enabled: false - -# don't group nicely documented or private attr_readers -Style/AccessorGrouping: - Exclude: - - 'formula.rb' - - 'formulary.rb' - - 'migrator.rb' - - 'resource.rb' - - 'system_command.rb' - - 'tap.rb' - -# make rspec formatting more flexible -Style/BlockDelimiters: - Exclude: - - '**/*_spec.rb' - - '**/shared_examples/**/*.rb' - -# document our public APIs -Style/Documentation: - Enabled: true - -Style/DocumentationMethod: - Enabled: true - Include: - - 'formula.rb' - -# don't want this for formulae but re-enabled for Library/Homebrew Style/FrozenStringLiteralComment: - Enabled: true - EnforcedStyle: always Exclude: - - '**/Casks/**/*.rb' - -# so many of these in formulae but none in here -Style/GuardClause: - Enabled: true - -# so many of these in formulae but none in here -Style/StringConcatenation: - Enabled: true + - '**/Casks/**/*.rb' -# don't want this for formulae but re-enabled for Library/Homebrew Style/HashAsLastArrayItem: - Enabled: true Exclude: - 'test/utils/spdx_spec.rb'