require: - rubocop-discourse - rubocop-rspec AllCops: TargetRubyVersion: 2.6 DisabledByDefault: true Exclude: - "db/schema.rb" - "bundle/**/*" - "vendor/**/*" - "node_modules/**/*" - "public/**/*" - "plugins/**/gems/**/*" Discourse: Enabled: true Discourse/NoChdir: Exclude: - 'spec/**/*' # Specs are run sequentially, so chdir can be used - 'plugins/*/spec/**/*' # Prefer &&/|| over and/or. Style/AndOr: Enabled: true Style/FrozenStringLiteralComment: 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/IndentationStyle: Enabled: true # Blank lines should not have any spaces. Layout/TrailingEmptyLines: 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/HashAlignment: Enabled: true Bundler/OrderedGems: Enabled: false Style/SingleLineMethods: Enabled: true Style/Semicolon: Enabled: true AllowAsExpressionSeparator: true Style/RedundantReturn: Enabled: true Style/GlobalVars: Enabled: true Severity: warning Exclude: - 'lib/tasks/**/*' - 'script/**/*' - 'spec/**/*.rb' - 'plugins/*/spec/**/*' # Specs RSpec/AnyInstance: Enabled: false # To be decided RSpec/AroundBlock: Enabled: true RSpec/BeforeAfterAll: Enabled: false # To be decided RSpec/ContextMethod: Enabled: false # TODO RSpec/ContextWording: Enabled: false # To be decided RSpec/DescribeClass: Enabled: false # To be decided RSpec/DescribeMethod: Enabled: true RSpec/DescribeSymbol: Enabled: false # To be decided RSpec/DescribedClass: Enabled: false # To be decided RSpec/DescribedClassModuleWrapping: Enabled: false # To be decided RSpec/EmptyExampleGroup: Enabled: true Exclude: - 'spec/requests/api/*' RSpec/EmptyLineAfterExample: Enabled: false # TODO RSpec/EmptyLineAfterExampleGroup: Enabled: false # TODO RSpec/EmptyLineAfterFinalLet: Enabled: false # TODO RSpec/EmptyLineAfterHook: Enabled: false # TODO RSpec/EmptyLineAfterSubject: Enabled: false # TODO RSpec/ExampleLength: Enabled: false # To be decided RSpec/ExampleWithoutDescription: Enabled: true RSpec/ExampleWording: Enabled: false # TODO RSpec/ExpectActual: Enabled: true RSpec/ExpectChange: Enabled: false # To be decided RSpec/ExpectInHook: Enabled: false # To be decided RSpec/ExpectOutput: Enabled: true RSpec/FilePath: Enabled: false # To be decided RSpec/Focus: Enabled: true RSpec/HookArgument: Enabled: false # TODO RSpec/HooksBeforeExamples: Enabled: false # TODO RSpec/ImplicitBlockExpectation: Enabled: true RSpec/ImplicitExpect: Enabled: false # To be decided RSpec/ImplicitSubject: Enabled: false # To be decided RSpec/InstanceSpy: Enabled: true RSpec/InstanceVariable: Enabled: false # TODO RSpec/InvalidPredicateMatcher: Enabled: true RSpec/ItBehavesLike: Enabled: true RSpec/IteratedExpectation: Enabled: false # To be decided RSpec/LeadingSubject: Enabled: false # TODO RSpec/LeakyConstantDeclaration: Enabled: false # To be decided RSpec/LetBeforeExamples: Enabled: false # TODO RSpec/LetSetup: Enabled: false # TODO RSpec/MessageChain: Enabled: true RSpec/MessageSpies: Enabled: true RSpec/MissingExampleGroupArgument: Enabled: true RSpec/MultipleDescribes: Enabled: false # TODO RSpec/MultipleSubjects: Enabled: true RSpec/NamedSubject: Enabled: false # To be decided RSpec/NestedGroups: Enabled: false # To be decided RSpec/OverwritingSetup: Enabled: true RSpec/ReceiveCounts: Enabled: true RSpec/ReceiveNever: Enabled: true RSpec/RepeatedDescription: Enabled: false # TODO RSpec/RepeatedExample: Enabled: false # TODO RSpec/RepeatedExampleGroupBody: Enabled: false # TODO RSpec/RepeatedExampleGroupDescription: Enabled: false # TODO RSpec/ReturnFromStub: Enabled: true RSpec/ScatteredSetup: Enabled: false # TODO RSpec/SharedContext: Enabled: true RSpec/SharedExamples: Enabled: true RSpec/SingleArgumentMessageChain: Enabled: true RSpec/SubjectStub: Enabled: true RSpec/UnspecifiedException: Enabled: true RSpec/VerifiedDoubles: Enabled: true RSpec/VoidExpect: Enabled: true RSpec/Yield: Enabled: true Capybara/CurrentPathExpectation: Enabled: true Capybara/FeatureMethods: Enabled: true FactoryBot/AttributeDefinedStatically: Enabled: true FactoryBot/CreateList: Enabled: true FactoryBot/FactoryClassName: Enabled: true Rails/HttpStatus: Enabled: true