Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RuboCop changes. #1128

Merged
merged 4 commits into from Sep 27, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
298 changes: 200 additions & 98 deletions Library/.rubocop_rules.yml
@@ -1,75 +1,194 @@
# ruby style guide favorite
Style/StringLiterals:
EnforcedStyle: double_quotes

# consistency with above
Style/StringLiteralsInInterpolation:
EnforcedStyle: double_quotes

# only for numbers >= 1_000_000
Style/NumericLiterals:
MinDigits: 7

# zero-prefixed octal literals are just too widely used (and mostly understood)
Style/NumericLiteralPrefix:
EnforcedOctalStyle: zero_only

# percent-x is allowed for multiline
Style/CommandLiteral:
EnforcedStyle: mixed

# depends_on foo: :bar looks rubbish
Style/HashSyntax:
EnforcedStyle: ruby19
Exclude:
- 'Taps/**/*'

# paths abound, easy escape
Style/RegexpLiteral:
EnforcedStyle: slashes

Style/Alias:
EnforcedStyle: prefer_alias

# our current conditional style is established, clear and
# requiring users to change that now would be confusing.
Style/ConditionalAssignment:
Enabled: false

# no metrics for formulas
Metrics/AbcSize:
Enabled: false
Metrics/CyclomaticComplexity:
Enabled: false
Metrics/MethodLength:
Enabled: false

Metrics/ClassLength:
Enabled: false
Metrics/PerceivedComplexity:

Metrics/CyclomaticComplexity:
Enabled: false

# we often need very long lines
Metrics/LineLength:
Enabled: false

# formulas have no mandatory doc
Style/Documentation:
Metrics/MethodLength:
Enabled: false

Metrics/ModuleLength:
CountComments: false
Exclude:
- 'Homebrew/cask/lib/hbc/locations.rb'
- 'Homebrew/cask/lib/hbc/macos.rb'
- 'Homebrew/cask/lib/hbc/utils.rb'

Metrics/PerceivedComplexity:
Enabled: false

# favor parens-less DSL-style arguments
Lint/AmbiguousOperator:
Enabled: false

Lint/AmbiguousRegexpLiteral:
Enabled: false

Lint/AssignmentInCondition:
Enabled: false

Lint/EndAlignment:
AlignWith: variable

# `formula do` uses nested method definitions
Lint/NestedMethodDefinition:
Exclude:
- 'Homebrew/test/**/*'

Lint/ParenthesesAsGroupedExpression:
Enabled: false

# compact style
Style/Alias:
EnforcedStyle: prefer_alias

Style/AlignHash:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reckon it's worth not having this because of the realignment required when different length keys are added to a large existing hash and the expanding diff that results.

Enabled: false

# `system` is a special case and aligns on second argument
Style/AlignParameters:
Enabled: false

Style/BarePercentLiterals:
Exclude:
- 'Taps/**/*'
EnforcedStyle: percent_q

Style/BlockDelimiters:
EnforcedStyle: semantic
Exclude:
- 'Taps/**/*'
FunctionalMethods:
- expect
- find
- let
- let!
- subject
- watch
- inject
- map
- map!
- collect
- collect!
- reject
- reject!
- delete_if
- with_object
- popen_read
ProceduralMethods:
- after
- at_exit
- before
- benchmark
- bm
- bmbm
- capture_io
- capture_output
- capture_subprocess_io
- chdir
- context
- create
- define_method
- define_singleton_method
- fork
- measure
- new
- open
- realtime
- shutup
- tap
- each
- each_pair
- each_with_index
- reverse_each
- ignore_interrupts
IgnoredMethods:
- each_with_object
- it
- its
- lambda
- proc
- formula
- mock
- devel
- stable
- head
- assert_raises
- assert_nothing_raised
- resource
- with_build_environment
- ensure_writable
- satisfy
- fetch
- brew
- expand
- env
- recursive_dependencies
- trap
- link_dir
- with_system_path

Style/CaseIndentation:
IndentWhenRelativeTo: end

Style/ClassAndModuleChildren:
EnforcedStyle: nested

# percent-x is allowed for multiline
Style/CommandLiteral:
EnforcedStyle: mixed

# our current conditional style is established, clear and
# requiring users to change that now would be confusing.
Style/ConditionalAssignment:
Enabled: false

Style/Documentation:
Enabled: false

Style/EmptyLineBetweenDefs:
AllowAdjacentOneLineDefs: true

# dashes in filenames are typical
Style/FileName:
Regex: !ruby/regexp /^[\w\@\-\+\.]+(\.rb)?$/

# counterproductive in formulas, notably within the install method
Style/GuardClause:
Exclude:
- 'Taps/**/*'

# depends_on foo: :bar looks rubbish
Style/HashSyntax:
EnforcedStyle: ruby19_no_mixed_keys
Exclude:
- 'Taps/**/*'

Style/IfUnlessModifier:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think unless this can be somehow told "don't put this on the same line if it makes the line exceed >80 characters" then it's worth omitting.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gotcha. Yeh, that'd be good to use 👍

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, it is already in use, it being the default, but apparently it does not work in the other direction: rubocop/rubocop#3534

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🆒, probably worth disabling until then.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@reitermarkus Thoughts on this? Did you just update the changes to that they match this?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left this as-is, because disabling doesn't change anything. Corrected two lines manually though which were > 80 characters, which will be caught automatically once this is fixed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, thanks.

Exclude:
- 'Taps/**/*'

Style/IndentArray:
EnforcedStyle: special_inside_parentheses

# we won't change backward compatible method names
Style/MethodName:
Exclude:
- 'Homebrew/compat/**/*'

# only for numbers >= 1_000_000
Style/NumericLiterals:
MinDigits: 7

# zero-prefixed octal literals are just too widely used (and mostly understood)
Style/NumericLiteralPrefix:
EnforcedOctalStyle: zero_only

# consistency and readability when faced with string interpolation
Style/PercentLiteralDelimiters:
PreferredDelimiters:
Expand All @@ -83,6 +202,23 @@ Style/PercentLiteralDelimiters:
'%W': '[]'
'%x': '()'

# we prefer Perl-style regex back references
Style/PerlBackrefs:
Enabled: false

# we won't change backward compatible predicate names
Style/PredicateName:
Exclude:
- 'Homebrew/compat/**/*'
NameWhitelist: is_32_bit?, is_64_bit?

Style/RaiseArgs:
EnforcedStyle: exploded

# paths abound, easy escape
Style/RegexpLiteral:
EnforcedStyle: slashes

# conflicts with DSL-style path concatenation with `/`
Style/SpaceAroundOperators:
Enabled: false
Expand All @@ -91,66 +227,32 @@ Style/SpaceAroundOperators:
Style/SpecialGlobalVars:
Enabled: false

# `system` is a special case and aligns on second argument
Style/AlignParameters:
Enabled: false

# counterproductive in formulas, notably within the install method
Style/GuardClause:
Exclude:
- 'Taps/**/*'
Style/IfUnlessModifier:
Exclude:
- 'Taps/**/*'
# ruby style guide favorite
Style/StringLiterals:
EnforcedStyle: double_quotes

# TODO: enforce when rubocop has fixed this
# https://github.com/bbatsov/rubocop/issues/3516
Style/VariableNumber:
Enabled: false
# consistency with above
Style/StringLiteralsInInterpolation:
EnforcedStyle: double_quotes

# TODO: enforce when rubocop has shipped this
# https://github.com/bbatsov/rubocop/pull/3513
Style/TernaryParentheses:
Enabled: false

# dashes in filenames are typical
Style/FileName:
Regex: !ruby/regexp /^[\w\@\-\+\.]+(\.rb)?$/

# no percent word array, being friendly to non-ruby users
# TODO: enforce when rubocop has fixed this
# https://github.com/bbatsov/rubocop/issues/1543
Style/WordArray:
Enabled: false
Style/UnneededCapitalW:
Enabled: false

# we prefer compact if-else-end/case-when-end alignment
Lint/EndAlignment:
AlignWith: variable
Style/CaseIndentation:
IndentWhenRelativeTo: end

# we prefer Perl-style regex back references
Style/PerlBackrefs:
Enabled: false

# makes diffs nicer
Style/TrailingCommaInLiteral:
EnforcedStyleForMultiline: comma

# we won't change backward compatible method names
Style/MethodName:
Exclude:
- 'Homebrew/compat/**/*'
Style/UnneededCapitalW:
Enabled: false

# we won't change backward compatible predicate names
Style/PredicateName:
Exclude:
- 'Homebrew/compat/**/*'
NameWhitelist: is_32_bit?, is_64_bit?
# TODO: enforce when rubocop has fixed this
# https://github.com/bbatsov/rubocop/issues/3516
Style/VariableNumber:
Enabled: false

# `formula do` uses nested method definitions
Lint/NestedMethodDefinition:
Exclude:
- 'Homebrew/test/**/*'
# TODO: enforce when rubocop has fixed this
# https://github.com/bbatsov/rubocop/issues/1543
Style/WordArray:
Enabled: false