1
0
Fork 0
mirror of https://github.com/paper-trail-gem/paper_trail.git synced 2022-11-09 11:33:19 -05:00
paper-trail-gem--paper_trail/.rubocop.yml

167 lines
5.2 KiB
YAML
Raw Normal View History

require:
- rubocop-rspec
inherit_from: .rubocop_todo.yml
2016-02-15 18:13:45 -05:00
# Please:
#
# - Comment any deviations from the Ruby Style Guide
# - Alphabetize cops
# - Only include permanent config; temporary goes in .rubocop_todo.yml
2015-11-01 21:33:16 -05:00
AllCops:
Exclude:
- gemfiles/vendor/bundle/**/* # This dir only shows up on travis ¯\_(ツ)_/¯
- spec/dummy_app/db/schema.rb # Generated, out of our control
# Set to lowest supported version
2017-12-10 23:01:21 -05:00
TargetRubyVersion: 2.3
2016-02-15 18:13:45 -05:00
2018-03-27 18:11:10 -04:00
Bundler/OrderedGems:
Exclude:
- gemfiles/* # generated by Appraisal
2017-09-18 23:17:13 -04:00
Layout/AlignParameters:
EnforcedStyle: with_fixed_indentation
Layout/DotPosition:
EnforcedStyle: trailing
Layout/IndentHeredoc:
Exclude:
- paper_trail.gemspec
Layout/MultilineMethodCallIndentation:
EnforcedStyle: indented
Layout/MultilineOperationIndentation:
EnforcedStyle: indented
# Use exactly one space on each side of an operator. Do not align operators
# because it makes the code harder to edit, and makes lines unnecessarily long.
Layout/SpaceAroundOperators:
AllowForAlignment: false
# Migrations often contain long up/down methods, and extracting smaller methods
# from these is of questionable value.
Metrics/AbcSize:
Exclude:
- 'spec/dummy_app/db/migrate/*'
2017-03-31 21:42:14 -04:00
# Not a useful metric compared to, e.g. `AbcSize`.
Metrics/BlockLength:
Enabled: false
# Not a useful metric compared to, e.g. `AbcSize`.
Metrics/ClassLength:
Enabled: false
2016-02-15 18:13:45 -05:00
# The Ruby Style Guide recommends to "Limit lines to 80 characters."
# (https://github.com/bbatsov/ruby-style-guide#80-character-limits)
2018-03-27 18:43:28 -04:00
# Please aim for 80, but up to 100 is OK.
2016-02-15 18:13:45 -05:00
Metrics/LineLength:
Max: 100
# The number of lines in a method is not a useful metric compared to `AbcSize`.
# It's common to have very long methods (> 50 lines) which are quite simple. For
# example, a method that returns a long string with only a few interpolations.
2016-02-15 18:13:45 -05:00
Metrics/MethodLength:
Enabled: false
2015-11-27 23:37:29 -05:00
# Not a useful metric compared to, e.g. `AbcSize`.
Metrics/ModuleLength:
Enabled: false
2017-09-18 23:17:13 -04:00
Naming/FileName:
Exclude:
- Appraisals
2018-03-27 18:43:28 -04:00
# Heredocs are usually assigned to a variable or constant, which already has a
# name, so naming the heredoc doesn't add much value. Feel free to name
# heredocs that are used as anonymous values (not a variable, constant, or
# named parameter).
#
# All heredocs containing SQL should be named SQL, to support editor syntax
# highlighting.
2017-09-18 23:17:13 -04:00
Naming/HeredocDelimiterNaming:
Enabled: false
Naming/PredicateName:
NameWhitelist: has_paper_trail
2018-03-27 18:11:10 -04:00
# Too subtle to lint.
# Two-letter param names are OK. Consider `send_email(to:, cc:)`.
# Even one-letter names are OK. Consider `draw_point(x, y)`.
Naming/UncommunicativeMethodParamName:
2017-09-18 23:17:13 -04:00
Enabled: false
# This cop does not seem to work in rubocop-rspec 1.28.0
RSpec/DescribeClass:
Enabled: false
# Yes, ideally examples would be short. Is it possible to pick a limit and say,
# "no example will ever be longer than this"? Hard to say. Sometimes they're
# quite long.
RSpec/ExampleLength:
Enabled: false
RSpec/FilePath:
Exclude:
- spec/paper_trail/association_reify_error_behaviour/error.rb
- spec/paper_trail/association_reify_error_behaviour/warn.rb
- spec/paper_trail/association_reify_error_behaviour/ignore.rb
2017-03-31 21:42:14 -04:00
# In an ideal world, each example has a single expectation. In the real world,
# sometimes setup is a pain and you don't want to duplicate setup in multiple
# examples, or make the specs more confusing with many nested `context`s, and
# the practical thing is to have multiple expectations.
RSpec/MultipleExpectations:
Enabled: false
2016-01-18 14:27:07 -05:00
# Please use semantic style, e.g. `do` when there's a side-effect, else `{}`.
# The semantic style is too nuanced to lint, so the cop is disabled.
Style/BlockDelimiters:
Enabled: false
2016-02-21 23:06:16 -05:00
# Use double negation wherever it would otherwise be impractical to convert
# a value to an actual boolean.
Style/DoubleNegation:
Enabled: false
2018-03-27 18:11:10 -04:00
# Avoid annotated tokens except in desperately complicated format strings.
# In 99% of format strings they actually make it less readable.
Style/FormatStringToken:
Enabled: false
Style/FrozenStringLiteralComment:
Exclude:
- gemfiles/* # generated by Appraisal
# The decision of when to use a guard clause to improve readability is subtle,
# and it's not clear that it can be linted. Certainly, the default
# `MinBodyLength` of 1 can actually hurt readability.
Style/GuardClause:
2017-03-31 21:42:14 -04:00
Enabled: false
2018-03-27 18:11:10 -04:00
# Only use postfix (modifier) conditionals for utterly simple statements.
# As a rule of thumb, the entire statement should not exceed 60 chars.
# Rubocop used to support this level of configuration, but no longer does.
Style/IfUnlessModifier:
2018-03-27 18:11:10 -04:00
Enabled: false
# Using `module_function` instead of `extend self` would make the instance
# methods in these modules private. That would be a breaking change, so these
# modules are excluded. See discussion in:
2018-05-09 07:25:56 -04:00
# - https://github.com/paper-trail-gem/paper_trail/pull/756
# - https://github.com/bbatsov/ruby-style-guide/issues/556
Style/ModuleFunction:
Exclude:
- 'lib/paper_trail/serializers/json.rb'
- 'lib/paper_trail/serializers/yaml.rb'
# The Ruby Style Guide does not prescribe a particular quote character, only
# that a project should pick one and be consistent. The decision has no
# performance implications. Double quotes are slightly easier to read.
Style/StringLiterals:
EnforcedStyle: double_quotes