276 lines
6.5 KiB
YAML
276 lines
6.5 KiB
YAML
inherit_from: ./.rubocop_shared.yml
|
|
|
|
# enable all formulae audits
|
|
FormulaAudit:
|
|
Enabled: true
|
|
|
|
# enable all formulae strict audits
|
|
FormulaAuditStrict:
|
|
Enabled: true
|
|
|
|
# disable all formulae strict audits by default
|
|
NewFormulaAudit:
|
|
Enabled: false
|
|
|
|
# make our hashes consistent
|
|
Layout/AlignHash:
|
|
EnforcedHashRocketStyle: table
|
|
EnforcedColonStyle: table
|
|
|
|
# `system` is a special case and aligns on second argument
|
|
Layout/AlignParameters:
|
|
Enabled: false
|
|
|
|
# favour parens-less DSL-style arguments
|
|
Lint/AmbiguousOperator:
|
|
Enabled: false
|
|
|
|
# this is a bit less "floaty"
|
|
Layout/CaseIndentation:
|
|
EnforcedStyle: end
|
|
|
|
# this is a bit less "floaty"
|
|
Layout/EndAlignment:
|
|
EnforcedStyleAlignWith: start_of_line
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
|
|
# enforce use of <<~EOS
|
|
Layout/IndentHeredoc:
|
|
EnforcedStyle: squiggly
|
|
|
|
# conflicts with DSL-style path concatenation with `/`
|
|
Layout/SpaceAroundOperators:
|
|
Enabled: false
|
|
|
|
# use spaces for indentation; detect tabs
|
|
Layout/Tab:
|
|
Enabled: true
|
|
|
|
# Auto-correct is broken (https://github.com/rubocop-hq/rubocop/issues/6300).
|
|
Layout/EmptyLineAfterGuardClause:
|
|
Enabled: false
|
|
|
|
# Auto-correct is broken (https://github.com/rubocop-hq/rubocop/issues/6258)
|
|
# and layout is not configurable (https://github.com/rubocop-hq/rubocop/issues/6254).
|
|
Layout/RescueEnsureAlignment:
|
|
Enabled: false
|
|
|
|
# favour parens-less DSL-style arguments
|
|
Lint/AmbiguousBlockAssociation:
|
|
Enabled: false
|
|
|
|
# so many of these in formulae and can't be autocorrected
|
|
# TODO: fix these as `ruby -w` complains about them.
|
|
Lint/AmbiguousRegexpLiteral:
|
|
Enabled: false
|
|
|
|
# assignment in conditions are useful sometimes
|
|
# TODO: add parentheses for these and remove
|
|
Lint/AssignmentInCondition:
|
|
Enabled: false
|
|
|
|
# we output how to use interpolated strings too often
|
|
Lint/InterpolationCheck:
|
|
Enabled: false
|
|
|
|
# so many of these in formulae and can't be autocorrected
|
|
Lint/ParenthesesAsGroupedExpression:
|
|
Enabled: false
|
|
|
|
# most metrics don't make sense to apply for formulae/taps
|
|
Metrics/AbcSize:
|
|
Enabled: false
|
|
Metrics/BlockLength:
|
|
Enabled: false
|
|
Metrics/ClassLength:
|
|
Enabled: false
|
|
Metrics/CyclomaticComplexity:
|
|
Enabled: false
|
|
Metrics/MethodLength:
|
|
Enabled: false
|
|
# Metrics/ModuleLength:
|
|
# Enabled: false
|
|
Metrics/PerceivedComplexity:
|
|
Enabled: false
|
|
|
|
# keyword arguments don't have the same readability problems
|
|
Metrics/ParameterLists:
|
|
CountKeywordArgs: false
|
|
|
|
# GitHub diff UI wraps beyond 118 characters (so that's the goal)
|
|
Metrics/LineLength:
|
|
Max: 170
|
|
# ignore manpage comments and long single-line strings
|
|
IgnoredPatterns: ['#: ', ' url "', ' mirror "', ' plist_options :']
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
|
|
# dashes in filenames are typical
|
|
Naming/FileName:
|
|
Regex: !ruby/regexp /^[\w\@\-\+\.]+(\.rb)?$/
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
|
|
# implicitly allow EOS as we use it everywhere
|
|
Naming/HeredocDelimiterNaming:
|
|
Blacklist:
|
|
- END, EOD, EOF
|
|
|
|
# we have too many variables like sha256 where this harms readability
|
|
Naming/VariableNumber:
|
|
Enabled: false
|
|
|
|
# makes code less readable for minor performance increases
|
|
Performance/Caller:
|
|
Enabled: false
|
|
|
|
# we're doing this already so why not
|
|
Performance/CaseWhenSplat:
|
|
Enabled: true
|
|
|
|
# enable to avoid leaking resources
|
|
Style/AutoResourceCleanup:
|
|
Enabled: true
|
|
|
|
# this is a little more obvious what's going on
|
|
Style/BarePercentLiterals:
|
|
EnforcedStyle: percent_q
|
|
|
|
# consistency helps readability and helps people who don't know Ruby
|
|
Style/CollectionMethods:
|
|
Enabled: true
|
|
|
|
# our current conditional style is established
|
|
# TODO: enable this when possible
|
|
Style/ConditionalAssignment:
|
|
Enabled: false
|
|
|
|
# most of our APIs are internal so don't require docs
|
|
Style/Documentation:
|
|
Enabled: false
|
|
|
|
# we don't need UTF-8 encoding comments
|
|
Style/Encoding:
|
|
Enabled: true
|
|
|
|
# falsely flags e.g. curl formatting arguments as format strings
|
|
Style/FormatStringToken:
|
|
EnforcedStyle: template
|
|
|
|
# we want to add this slowly and manually
|
|
# TODO: add to more files
|
|
Style/FrozenStringLiteralComment:
|
|
Enabled: false
|
|
|
|
# so many of these in formulae and can't be autocorrected
|
|
Style/GuardClause:
|
|
Enabled: false
|
|
|
|
# depends_on a: :b looks weird in formulae.
|
|
Style/HashSyntax:
|
|
EnforcedStyle: hash_rockets
|
|
Exclude:
|
|
- '**/bin/**/*'
|
|
- '**/cmd/**/*'
|
|
- '**/lib/**/*'
|
|
- '**/spec/**/*'
|
|
- '**/Casks/**/*'
|
|
|
|
# this doesn't make sense for wide lines below maximum line length
|
|
# https://github.com/rubocop-hq/rubocop/issues/6149
|
|
Style/IfUnlessModifier:
|
|
Enabled: false
|
|
|
|
# only for numbers >= 1_000_000
|
|
Style/NumericLiterals:
|
|
MinDigits: 7
|
|
|
|
# zero-prefixed octal literals are just too widely used (and understood)
|
|
Style/NumericLiteralPrefix:
|
|
EnforcedOctalStyle: zero_only
|
|
|
|
# rescuing StandardError is an understood default
|
|
Style/RescueStandardError:
|
|
EnforcedStyle: implicit
|
|
|
|
# return nil is unnecessary and a common mistake believing it's required
|
|
Style/ReturnNil:
|
|
Enabled: true
|
|
|
|
# We have no use for using `warn` because we are
|
|
# calling Ruby with warnings disabled ourselves (for now).
|
|
Style/StderrPuts:
|
|
Enabled: false
|
|
|
|
# ruby style guide favorite
|
|
Style/StringLiterals:
|
|
EnforcedStyle: double_quotes
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
|
|
# consistency with above
|
|
Style/StringLiteralsInInterpolation:
|
|
EnforcedStyle: double_quotes
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
|
|
# consistency helps readability and helps people who don't know Ruby
|
|
Style/StringMethods:
|
|
Enabled: true
|
|
|
|
# less confusing to non-Rubyists
|
|
Style/SymbolArray:
|
|
EnforcedStyle: brackets
|
|
|
|
# make things a bit easier to read
|
|
Style/TernaryParentheses:
|
|
EnforcedStyle: require_parentheses_when_complex
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
|
|
# messes with existing plist/caveats style
|
|
Style/TrailingBodyOnMethodDefinition:
|
|
Enabled: false
|
|
|
|
# all trailing commas make diffs nicer
|
|
Style/TrailingCommaInArguments:
|
|
EnforcedStyleForMultiline: comma
|
|
Style/TrailingCommaInArrayLiteral:
|
|
EnforcedStyleForMultiline: comma
|
|
Style/TrailingCommaInHashLiteral:
|
|
EnforcedStyleForMultiline: comma
|
|
|
|
# a bit confusing to non-Rubyists but useful for longer arrays
|
|
Style/WordArray:
|
|
MinSize: 4
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
|
|
# exclude some styles for casks (for now)
|
|
# TODO: make Homebrew/brew, casks and formulae more consistent
|
|
Layout/ElseAlignment:
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
Layout/IndentArray:
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
Layout/IndentHash:
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
Layout/IndentationWidth:
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
Performance/StringReplacement:
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
Style/EmptyElse:
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
Style/PercentLiteralDelimiters:
|
|
Exclude:
|
|
- '**/Casks/**/*'
|
|
Style/RegexpLiteral:
|
|
Exclude:
|
|
- '**/Casks/**/*'
|