mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 06:28:57 +08:00
9fea43e46a
`FileUtils.cd` and `Dir.chdir` cause the working directory to change for the entire process. We run sidekiq jobs, hijacked requests and deferred jobs in threads, which can make working directory changes have unintended side-effects. - Add a rubocop rule to warn about usage of Dir.chdir and FileUtils.cd - Added rubocop:disable for scripts used outside the app - Refactored code using cd to use alternative methods - Temporarily skipped the rubocop check for lib/backup_restore. This will require more complex refactoring, so I will create a separate PR for review
136 lines
2.6 KiB
YAML
136 lines
2.6 KiB
YAML
require:
|
|
- ./lib/rubocop/cop/discourse_cops.rb
|
|
|
|
AllCops:
|
|
TargetRubyVersion: 2.4
|
|
DisabledByDefault: true
|
|
Exclude:
|
|
- 'db/schema.rb'
|
|
- 'bundle/**/*'
|
|
- 'vendor/**/*'
|
|
- 'node_modules/**/*'
|
|
- 'public/**/*'
|
|
- 'plugins/**/gems/**/*'
|
|
|
|
# Prefer &&/|| over and/or.
|
|
Style/AndOr:
|
|
Enabled: true
|
|
|
|
Style/FrozenStringLiteralComment:
|
|
Enabled: true
|
|
|
|
# Do not use braces for hash literals when they are the last argument of a
|
|
# method call.
|
|
Style/BracesAroundHashParameters:
|
|
Enabled: true
|
|
|
|
# Align `when` with `case`.
|
|
Layout/CaseIndentation:
|
|
Enabled: true
|
|
|
|
# Align comments with method definitions.
|
|
Layout/CommentIndentation:
|
|
Enabled: true
|
|
|
|
# No extra empty lines.
|
|
Layout/EmptyLines:
|
|
Enabled: true
|
|
|
|
# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
|
|
Style/HashSyntax:
|
|
Enabled: true
|
|
|
|
# Two spaces, no tabs (for indentation).
|
|
Layout/IndentationWidth:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAfterColon:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAfterComma:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAroundEqualsInParameterDefault:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAroundKeyword:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAroundOperators:
|
|
Enabled: true
|
|
|
|
Layout/SpaceBeforeFirstArg:
|
|
Enabled: true
|
|
|
|
# Defining a method with parameters needs parentheses.
|
|
Style/MethodDefParentheses:
|
|
Enabled: true
|
|
|
|
# Use `foo {}` not `foo{}`.
|
|
Layout/SpaceBeforeBlockBraces:
|
|
Enabled: true
|
|
|
|
# Use `foo { bar }` not `foo {bar}`.
|
|
Layout/SpaceInsideBlockBraces:
|
|
Enabled: true
|
|
|
|
# Use `{ a: 1 }` not `{a:1}`.
|
|
Layout/SpaceInsideHashLiteralBraces:
|
|
Enabled: true
|
|
|
|
Layout/SpaceInsideParens:
|
|
Enabled: true
|
|
|
|
# Detect hard tabs, no hard tabs.
|
|
Layout/Tab:
|
|
Enabled: true
|
|
|
|
# Blank lines should not have any spaces.
|
|
Layout/TrailingBlankLines:
|
|
Enabled: true
|
|
|
|
# No trailing whitespace.
|
|
Layout/TrailingWhitespace:
|
|
Enabled: true
|
|
|
|
Lint/Debugger:
|
|
Enabled: true
|
|
|
|
Layout/BlockAlignment:
|
|
Enabled: true
|
|
|
|
# Align `end` with the matching keyword or starting expression except for
|
|
# assignments, where it should be aligned with the LHS.
|
|
Layout/EndAlignment:
|
|
Enabled: true
|
|
EnforcedStyleAlignWith: variable
|
|
|
|
# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
|
|
Lint/RequireParentheses:
|
|
Enabled: true
|
|
|
|
Lint/ShadowingOuterLocalVariable:
|
|
Enabled: true
|
|
|
|
Layout/MultilineMethodCallIndentation:
|
|
Enabled: true
|
|
EnforcedStyle: indented
|
|
|
|
Layout/AlignHash:
|
|
Enabled: true
|
|
|
|
Bundler/OrderedGems:
|
|
Enabled: false
|
|
|
|
Style/SingleLineMethods:
|
|
Enabled: true
|
|
|
|
Style/Semicolon:
|
|
Enabled: true
|
|
AllowAsExpressionSeparator: true
|
|
|
|
DiscourseCops/NoChdir:
|
|
Enabled: true
|
|
Exclude:
|
|
- 'spec/**/*' # Specs are run sequentially, so chdir can be used
|
|
- 'lib/backup_restore/**/*' # TODO |