require: - rubocop-performance - rubocop-rails - rubocop-rspec - ./lib/cops/add_concurrent_index.rb - ./lib/cops/application_name.rb - ./lib/cops/unscoped.rb inherit_mode: merge: - Include AllCops: TargetRubyVersion: 3.2 DisabledByDefault: true SuggestExtensions: false NewCops: enable Include: - "app/**/*.prawn" Exclude: - "db/schema.rb" - "db/migrate/20190730153555_recreate_structure.rb" - "bin/*" - "node_modules/**/*" - "vendor/**/*" DS/AddConcurrentIndex: Enabled: true DS/ApplicationName: Enabled: true Exclude: - './config/initializers/01_application_name.rb' - './lib/cops/application_name.rb' - './lib/linters/application_name_linter.rb' - "./spec/**/*" DS/Unscoped: Enabled: true Bundler/DuplicatedGem: Enabled: true Bundler/InsecureProtocolSource: Enabled: true Bundler/OrderedGems: Enabled: true Gemspec/DuplicatedAssignment: Enabled: true Gemspec/OrderedDependencies: Enabled: true Gemspec/RequiredRubyVersion: Enabled: true Layout/AccessModifierIndentation: Enabled: true Layout/ArrayAlignment: Enabled: true Layout/HashAlignment: Enabled: false Layout/ParameterAlignment: Enabled: true EnforcedStyle: with_fixed_indentation Layout/BlockAlignment: Enabled: false Layout/BlockEndNewline: Enabled: true Layout/CaseIndentation: Enabled: true EnforcedStyle: end Layout/ClassStructure: Enabled: false Layout/ClosingParenthesisIndentation: Enabled: true Layout/CommentIndentation: Enabled: true Layout/ConditionPosition: Enabled: true Layout/DefEndAlignment: Enabled: false Layout/DotPosition: Enabled: true Layout/ElseAlignment: Enabled: true Layout/EmptyComment: Enabled: true Layout/EmptyLineAfterMagicComment: Enabled: true Layout/EmptyLineBetweenDefs: Enabled: true Layout/EmptyLines: Enabled: true Layout/EmptyLineAfterGuardClause: Enabled: false # FIXME: private should not be a column name on TypeDeChamp Layout/EmptyLinesAroundAccessModifier: Enabled: true EnforcedStyle: around Exclude: - "spec/factories/type_de_champ.rb" Layout/EmptyLinesAroundArguments: Enabled: true Layout/EmptyLinesAroundBeginBody: Enabled: true Layout/EmptyLinesAroundBlockBody: Enabled: true Layout/EmptyLinesAroundClassBody: Enabled: true Layout/EmptyLinesAroundExceptionHandlingKeywords: Enabled: false Layout/EmptyLinesAroundMethodBody: Enabled: true Layout/EmptyLinesAroundModuleBody: Enabled: true Layout/EndAlignment: Enabled: true EnforcedStyleAlignWith: variable Layout/EndOfLine: Enabled: true EnforcedStyle: lf Layout/ExtraSpacing: Enabled: true Exclude: - "Guardfile" Layout/FirstArrayElementLineBreak: Enabled: true Layout/FirstHashElementLineBreak: Enabled: true Layout/FirstMethodArgumentLineBreak: Enabled: false Layout/FirstMethodParameterLineBreak: Enabled: false Layout/FirstParameterIndentation: Enabled: true Layout/FirstArrayElementIndentation: Enabled: true EnforcedStyle: consistent Layout/AssignmentIndentation: Enabled: true Layout/FirstHashElementIndentation: Enabled: true EnforcedStyle: consistent Layout/HeredocIndentation: Enabled: true Layout/IndentationConsistency: Enabled: true EnforcedStyle: normal Layout/IndentationWidth: Enabled: true Layout/InitialIndentation: Enabled: true Layout/LeadingCommentSpace: Enabled: true Layout/MultilineArrayBraceLayout: Enabled: true EnforcedStyle: new_line Layout/MultilineAssignmentLayout: Enabled: false Layout/MultilineBlockLayout: Enabled: true Layout/MultilineHashBraceLayout: Enabled: true EnforcedStyle: new_line Layout/MultilineMethodCallBraceLayout: Enabled: true EnforcedStyle: symmetrical Layout/MultilineMethodCallIndentation: Enabled: true EnforcedStyle: indented Layout/MultilineMethodDefinitionBraceLayout: Enabled: true Layout/MultilineOperationIndentation: Enabled: false Layout/RescueEnsureAlignment: Enabled: true Layout/SpaceAfterColon: Enabled: true Layout/SpaceAfterComma: Enabled: true Layout/SpaceAfterMethodName: Enabled: true Layout/SpaceAfterNot: Enabled: true Layout/SpaceAfterSemicolon: Enabled: true Layout/SpaceAroundBlockParameters: Enabled: true Layout/SpaceAroundEqualsInParameterDefault: Enabled: true Layout/SpaceAroundKeyword: Enabled: true Layout/SpaceAroundOperators: Enabled: true Layout/SpaceBeforeBlockBraces: Enabled: true Layout/SpaceBeforeComma: Enabled: true Layout/SpaceBeforeComment: Enabled: true Layout/SpaceBeforeFirstArg: Enabled: true Layout/SpaceBeforeSemicolon: Enabled: true Layout/SpaceInLambdaLiteral: Enabled: true EnforcedStyle: require_space Layout/SpaceInsideArrayPercentLiteral: Enabled: true Layout/SpaceInsideBlockBraces: Enabled: true Layout/SpaceInsideHashLiteralBraces: Enabled: true Layout/SpaceInsideArrayLiteralBrackets: Enabled: true EnforcedStyle: no_space Layout/SpaceInsideParens: Enabled: true Layout/SpaceInsidePercentLiteralDelimiters: Enabled: true Layout/SpaceInsideRangeLiteral: Enabled: true Layout/SpaceInsideReferenceBrackets: Enabled: true Layout/SpaceInsideStringInterpolation: Enabled: true Layout/IndentationStyle: Enabled: true Layout/TrailingEmptyLines: Enabled: true Layout/TrailingWhitespace: Enabled: true Lint/AmbiguousBlockAssociation: Enabled: false Lint/AmbiguousOperator: Enabled: true Lint/AmbiguousRegexpLiteral: Enabled: true Lint/AssignmentInCondition: Enabled: true Lint/BigDecimalNew: Enabled: true Lint/BooleanSymbol: Enabled: true Lint/CircularArgumentReference: Enabled: true Lint/Debugger: Enabled: true Lint/DeprecatedClassMethods: Enabled: true Lint/DuplicateCaseCondition: Enabled: true Lint/DuplicateMethods: Enabled: true Lint/DuplicateHashKey: Enabled: true Lint/EachWithObjectArgument: Enabled: true Lint/ElseLayout: Enabled: true Lint/EmptyEnsure: Enabled: true Lint/EmptyExpression: Enabled: true Lint/EmptyInterpolation: Enabled: true Lint/EmptyWhen: Enabled: true Lint/EnsureReturn: Enabled: false Lint/FloatOutOfRange: Enabled: true Lint/FormatParameterMismatch: Enabled: true Lint/SuppressedException: Enabled: false Lint/ImplicitStringConcatenation: Enabled: true Lint/IneffectiveAccessModifier: Enabled: false Lint/InheritException: Enabled: true Lint/InterpolationCheck: Enabled: true Lint/LiteralAsCondition: Enabled: true Lint/LiteralInInterpolation: Enabled: true Lint/Loop: Enabled: true Lint/MissingCopEnableDirective: Enabled: true Lint/MultipleComparison: Enabled: true Lint/NestedMethodDefinition: Enabled: false Lint/NestedPercentLiteral: Enabled: true Lint/NextWithoutAccumulator: Enabled: true Lint/NonLocalExitFromIterator: Enabled: false Lint/NumberConversion: Enabled: false Lint/OrderedMagicComments: Enabled: true Lint/ParenthesesAsGroupedExpression: Enabled: true Exclude: - "spec/**/*" Lint/PercentStringArray: Enabled: false Lint/PercentSymbolArray: Enabled: false Lint/RandOne: Enabled: false Lint/RedundantWithIndex: Enabled: true Lint/RedundantWithObject: Enabled: true Lint/RegexpAsCondition: Enabled: true Lint/RequireParentheses: Enabled: false Lint/RescueException: Enabled: true Lint/RescueType: Enabled: true Lint/ReturnInVoidContext: Enabled: false Lint/SafeNavigationChain: Enabled: true Lint/ScriptPermission: Enabled: false Lint/ShadowedArgument: Enabled: true Lint/ShadowedException: Enabled: true Lint/ShadowingOuterLocalVariable: Enabled: false Lint/RedundantStringCoercion: Enabled: true Lint/Syntax: Enabled: true Lint/UnderscorePrefixedVariableName: Enabled: true Lint/UnifiedInteger: Enabled: true Lint/RedundantCopDisableDirective: Enabled: true Lint/RedundantCopEnableDirective: Enabled: true Lint/RedundantRequireStatement: Enabled: true Lint/RedundantSplatExpansion: Enabled: false Lint/UnreachableCode: Enabled: true Lint/UnusedBlockArgument: Enabled: true Lint/UnusedMethodArgument: Enabled: false Lint/UriEscapeUnescape: Enabled: false Lint/UriRegexp: Enabled: false Lint/UselessAccessModifier: Enabled: false Lint/UselessAssignment: Enabled: true Exclude: - "spec/**/*" Lint/BinaryOperatorWithIdenticalOperands: Enabled: true Lint/UselessSetterCall: Enabled: true Lint/Void: Enabled: true Metrics/AbcSize: Enabled: false Metrics/BlockLength: Enabled: false Metrics/BlockNesting: Enabled: false Metrics/ClassLength: Enabled: false Metrics/CyclomaticComplexity: Enabled: false Layout/LineLength: Enabled: false Metrics/MethodLength: Enabled: false Metrics/ModuleLength: Enabled: false Metrics/ParameterLists: Enabled: false Metrics/PerceivedComplexity: Enabled: false Naming/AccessorMethodName: Enabled: false Naming/AsciiIdentifiers: Enabled: false Naming/BinaryOperatorParameterName: Enabled: false Naming/ClassAndModuleCamelCase: Enabled: false Naming/ConstantName: Enabled: false Naming/FileName: Enabled: false Naming/HeredocDelimiterCase: Enabled: true Naming/HeredocDelimiterNaming: Enabled: false Naming/MemoizedInstanceVariableName: Enabled: false Naming/MethodName: Enabled: false Naming/PredicateName: Enabled: false Naming/BlockParameterName: Enabled: true Naming/MethodParameterName: Enabled: false Naming/VariableName: Enabled: false Naming/VariableNumber: Enabled: false Performance/Caller: Enabled: true Performance/CaseWhenSplat: Enabled: true Performance/Casecmp: Enabled: true Performance/CompareWithBlock: Enabled: true Performance/Count: Enabled: true Exclude: - "app/services/administrateur_usage_statistics_service.rb" Performance/Detect: Enabled: true Performance/DoubleStartEndWith: Enabled: true Performance/EndWith: Enabled: true Performance/FixedSize: Enabled: true Performance/FlatMap: Enabled: true Performance/OpenStruct: Enabled: true Performance/RangeInclude: Enabled: true Performance/RedundantBlockCall: Enabled: true Performance/RedundantMatch: Enabled: true Performance/RedundantMerge: Enabled: true Style/HashTransformValues: Enabled: true Style/RedundantSortBy: Enabled: true Performance/RegexpMatch: Enabled: true Performance/ReverseEach: Enabled: true Style/Sample: Enabled: true Performance/Size: Enabled: true Performance/StartWith: Enabled: true Performance/StringReplacement: Enabled: true Performance/TimesMap: Enabled: true Performance/UnfreezeString: Enabled: true Performance/UriDefaultParser: Enabled: true Rails: Enabled: true Rails/ActionControllerFlashBeforeRender: Enabled: true Rails/ActionControllerTestCase: Enabled: true Rails/ActionFilter: Enabled: true Rails/ActionOrder: Enabled: false Rails/ActiveRecordAliases: Enabled: true Rails/ActiveRecordCallbacksOrder: Enabled: false Rails/ActiveSupportAliases: Enabled: true Rails/ActiveSupportOnLoad: Enabled: true Rails/AddColumnIndex: Enabled: true Rails/AfterCommitOverride: Enabled: true Rails/ApplicationController: Enabled: false Rails/ApplicationJob: Enabled: true Rails/ApplicationRecord: Enabled: true Rails/AttributeDefaultBlockValue: Enabled: true Rails/Blank: Enabled: true Rails/BulkChangeTable: Enabled: false Rails/CompactBlank: Enabled: true Rails/CreateTableWithTimestamps: Enabled: true Exclude: - db/migrate/2015*.rb - db/migrate/2016*.rb - db/migrate/2017*.rb - db/migrate/2018*.rb - db/migrate/20200630140356_create_traitements.rb - db/migrate/20230630091637_create_dossier_assignments.rb Rails/Date: Enabled: false Rails/Delegate: Enabled: false Rails/DelegateAllowBlank: Enabled: true Rails/DeprecatedActiveModelErrorsMethods: Enabled: false # re-enable in rails 7 Rails/DotSeparatedKeys: Enabled: true Rails/DuplicateAssociation: Enabled: true Rails/DuplicateScope: Enabled: true Rails/DurationArithmetic: Enabled: true Rails/DynamicFindBy: Enabled: true Exclude: - spec/system/**/*.rb Rails/EagerEvaluationLogMessage: Enabled: true Rails/EnumUniqueness: Enabled: true Rails/EnvironmentComparison: Enabled: false Rails/Exit: Enabled: true Rails/ExpandedDateRange: Enabled: true Rails/FilePath: Enabled: false Rails/FindBy: Enabled: true Rails/FindById: Enabled: true Rails/FindEach: Enabled: true Exclude: - spec/**/* Rails/FreezeTime: Enabled: true Rails/HasAndBelongsToMany: Enabled: false Rails/HasManyOrHasOneDependent: Enabled: false Rails/HttpPositionalArguments: Enabled: true Rails/HttpStatus: Enabled: false Rails/I18nLazyLookup: Enabled: true Rails/I18nLocaleAssignment: Enabled: true Rails/I18nLocaleTexts: Enabled: false Rails/IgnoredColumnsAssignment: Enabled: true Rails/Inquiry: Enabled: true Rails/InverseOf: Enabled: true Rails/LexicallyScopedActionFilter: Enabled: false Rails/MailerName: Enabled: true Rails/MatchRoute: Enabled: true Rails/MigrationClassName: Enabled: true Rails/NegateInclude: Enabled: false Rails/NotNullColumn: Enabled: false Rails/Output: Enabled: false Rails/OutputSafety: Enabled: true Rails/Pluck: Enabled: false Rails/PluckInWhere: Enabled: true Rails/PluralizationGrammar: Enabled: true Rails/Presence: Enabled: true Rails/Present: Enabled: true Rails/RakeEnvironment: Enabled: false Rails/ReadWriteAttribute: Enabled: false Rails/RedundantAllowNil: Enabled: false Rails/RedundantPresenceValidationOnBelongsTo: Enabled: true Rails/RedundantReceiverInWithOptions: Enabled: true Rails/RedundantTravelBack: Enabled: true Rails/RelativeDateConstant: Enabled: true Rails/RenderInline: Enabled: true Rails/RenderPlainText: Enabled: true Rails/RequestReferer: Enabled: true Rails/ResponseParsedBody: Enabled: true Rails/ReversibleMigration: Enabled: false Rails/RootJoinChain: Enabled: true Rails/RootPathnameMethods: Enabled: true Rails/RootPublicPath: Enabled: true Rails/SaveBang: Enabled: false Rails/ScopeArgs: Enabled: true Rails/ShortI18n: Enabled: true Rails/SkipsModelValidations: Enabled: false Rails/SquishedSQLHeredocs: Enabled: true Rails/StripHeredoc: Enabled: true Rails/ThreeStateBooleanColumn: Enabled: true Exclude: - db/migrate/2019* - db/migrate/2020* - db/migrate/2021* - db/migrate/2022* - db/migrate/202301* - db/migrate/202303* Rails/TimeZone: EnforcedStyle: strict Rails/TimeZoneAssignment: Enabled: true Rails/ToFormattedS: Enabled: true Rails/ToSWithArgument: Enabled: true Rails/TopLevelHashWithIndifferentAccess: Enabled: true Rails/TransactionExitStatement: Enabled: true Rails/UniqBeforePluck: Enabled: true Rails/UniqueValidationWithoutIndex: Enabled: true Rails/UnknownEnv: Enabled: false Rails/UnusedIgnoredColumns: Enabled: true Rails/Validation: Enabled: true Rails/WhereEquals: Enabled: true Rails/WhereExists: Enabled: true Rails/WhereMissing: Enabled: true Rails/WhereNot: Enabled: true Rails/WhereNotWithMultipleConditions: Enabled: true RSpec/Focus: Enabled: true Security/Eval: Enabled: true Security/JSONLoad: Enabled: true Security/MarshalLoad: Enabled: true Security/Open: Enabled: true Security/YAMLLoad: Enabled: true Style/AccessModifierDeclarations: Enabled: false Style/Alias: Enabled: false Style/AndOr: Enabled: true Style/ArrayJoin: Enabled: true Style/AsciiComments: Enabled: false Style/Attr: Enabled: true Style/AutoResourceCleanup: Enabled: true Style/BarePercentLiterals: Enabled: false Style/BeginBlock: Enabled: true Style/BlockComments: Enabled: true Style/BlockDelimiters: Enabled: true Exclude: - "spec/**/*" Style/CaseEquality: Enabled: true Style/CharacterLiteral: Enabled: false Style/ClassAndModuleChildren: Enabled: false Style/ClassCheck: Enabled: true Style/ClassMethods: Enabled: true Style/ClassVars: Enabled: false Style/CollectionMethods: PreferredMethods: collect: map collect!: map! inject: reduce detect: find select: filter find_all: filter Enabled: true Style/ColonMethodCall: Enabled: true Style/ColonMethodDefinition: Enabled: true Style/CommandLiteral: Enabled: false Style/CommentAnnotation: Enabled: false Style/CommentedKeyword: Enabled: false Style/ConditionalAssignment: Enabled: false Style/Copyright: Enabled: false Style/DateTime: Enabled: false Style/DefWithParentheses: Enabled: true Style/Dir: Enabled: true Style/Documentation: Enabled: false Style/DocumentationMethod: Enabled: false Style/DoubleNegation: Enabled: false Style/EachForSimpleLoop: Enabled: true Style/EachWithObject: Enabled: false Style/EmptyBlockParameter: Enabled: true Style/EmptyCaseCondition: Enabled: false Style/EmptyElse: Enabled: false Style/EmptyLambdaParameter: Enabled: true Style/EmptyLiteral: Enabled: true Style/EmptyMethod: Enabled: false Style/Encoding: Enabled: true Style/EndBlock: Enabled: true Style/EvalWithLocation: Enabled: false Style/EvenOdd: Enabled: true Style/ExpandPathArguments: Enabled: true Style/FileRead: Enabled: true Style/FileWrite: Enabled: true Style/For: Enabled: true Style/FormatString: Enabled: true Style/FormatStringToken: Enabled: false EnforcedStyle: template Style/FrozenStringLiteralComment: Enabled: false Style/GlobalVars: Enabled: true Style/GuardClause: Enabled: false Style/HashSyntax: Enabled: false Style/IdenticalConditionalBranches: Enabled: false Style/IfInsideElse: Enabled: false Style/IfUnlessModifier: Enabled: false Style/IfUnlessModifierOfIfUnless: Enabled: false Style/IfWithSemicolon: Enabled: false Style/ImplicitRuntimeError: Enabled: false Style/InfiniteLoop: Enabled: false Style/InlineComment: Enabled: false Style/InverseMethods: Enabled: false Style/Lambda: Enabled: false Style/LambdaCall: Enabled: false Style/LineEndConcatenation: Enabled: false Style/MethodCallWithArgsParentheses: Enabled: false Style/MethodCallWithoutArgsParentheses: Enabled: false Style/MethodCalledOnDoEndBlock: Enabled: false Style/MethodDefParentheses: Enabled: true Lint/MissingSuper: Enabled: false Style/MinMax: Enabled: true Style/MissingElse: Enabled: false Style/MissingRespondToMissing: Enabled: false Style/MixinGrouping: Enabled: false Style/MixinUsage: Enabled: false Style/ModuleFunction: Enabled: false Style/MultilineBlockChain: Enabled: false Style/MultilineIfModifier: Enabled: false Style/MultilineIfThen: Enabled: false Style/MultilineMemoization: Enabled: false Style/MultilineTernaryOperator: Enabled: false Style/MultipleComparison: Enabled: false Style/MutableConstant: Enabled: false Style/NegatedIf: Enabled: false Style/NegatedWhile: Enabled: false Style/NestedModifier: Enabled: false Style/NestedParenthesizedCalls: Enabled: false Style/NestedTernaryOperator: Enabled: false Style/Next: Enabled: false Style/NilComparison: Enabled: false Style/NonNilCheck: Enabled: false Style/Not: Enabled: false Style/NumericLiteralPrefix: Enabled: false Style/NumericLiterals: Enabled: false Style/NumericPredicate: Enabled: false Style/OneLineConditional: Enabled: false Style/OptionHash: Enabled: false Style/OptionalArguments: Enabled: false Style/ParallelAssignment: Enabled: false Style/OrAssignment: Enabled: true Style/ParenthesesAroundCondition: Enabled: false Style/PercentLiteralDelimiters: Enabled: false Style/PercentQLiterals: Enabled: false Style/PerlBackrefs: Enabled: false Style/PreferredHashMethods: Enabled: false Style/Proc: Enabled: false Style/RaiseArgs: Enabled: false Style/RandomWithOffset: Enabled: false Style/RedundantBegin: Enabled: false Style/RedundantConditional: Enabled: true Style/RedundantException: Enabled: false Style/RedundantFreeze: Enabled: false Style/RedundantParentheses: Enabled: false Style/RedundantReturn: Enabled: false Style/RedundantSelf: Enabled: false Style/RegexpLiteral: Enabled: false Style/RescueModifier: Enabled: false Style/RescueStandardError: Enabled: false Style/ReturnNil: Enabled: false Style/SafeNavigation: Enabled: false Style/SelfAssignment: Enabled: false Style/Semicolon: Enabled: false Style/Send: Enabled: false Style/SignalException: Enabled: false Style/SingleLineBlockParams: Enabled: false Style/SingleLineMethods: Enabled: false Style/SpecialGlobalVars: Enabled: false Style/StabbyLambdaParentheses: Enabled: false Style/StderrPuts: Enabled: true Style/StringHashKeys: Enabled: false Style/StringLiterals: Enabled: false Style/StringLiteralsInInterpolation: Enabled: false Style/StringMethods: Enabled: false Style/StructInheritance: Enabled: false Style/SymbolArray: Enabled: true EnforcedStyle: brackets Style/SymbolLiteral: Enabled: true Style/SymbolProc: Enabled: true IgnoredMethods: [after] Style/TernaryParentheses: Enabled: false Style/TrailingBodyOnClass: Enabled: true Style/TrailingBodyOnMethodDefinition: Enabled: true Style/TrailingBodyOnModule: Enabled: true Style/TrailingCommaInArguments: Enabled: true Style/TrailingCommaInArrayLiteral: Enabled: true Style/TrailingCommaInHashLiteral: Enabled: true Style/TrailingMethodEndStatement: Enabled: true Style/TrailingUnderscoreVariable: Enabled: false Style/TrivialAccessors: Enabled: false Style/UnlessElse: Enabled: true Style/RedundantCapitalW: Enabled: true Style/RedundantInterpolation: Enabled: true Style/RedundantPercentQ: Enabled: true Style/VariableInterpolation: Enabled: true Style/WhenThen: Enabled: false Style/WhileUntilDo: Enabled: true # Disabled because we don't want to use modifiers Style/WhileUntilModifier: Enabled: false Style/WordArray: Enabled: true EnforcedStyle: brackets Style/YodaCondition: Enabled: true Style/ZeroLengthPredicate: Enabled: true