--- require: - rubocop-chromebrew AllCops: Exclude: - 'lib/docopt.rb' NewCops: enable TargetRubyVersion: 4.0 # These cops have been temporarily disabled and should be reenabled asap Lint/ShadowingOuterLocalVariable: Enabled: false Lint/Debugger: DebuggerMethods: Pry: ~ # TODO Layout/HashAlignment: EnforcedHashRocketStyle: - separator EnforcedColonStyle: - separator # When this is reenabled, keep the EnforcedHashRocketStyle and EnforcedColonStyle configuration Enabled: false # End temporarily disabled cops # These cops have either been disabled permanently or have a non-default configuration option. # If you permanently disable another cop, please add a comment explaining why. # If you set a non-default configuration for a cop, please add a comment explaining why. # An empty line after a guard clause can improve readability, but mandating it reduces compactness. Layout/EmptyLineAfterGuardClause: Enabled: false # TODO Layout/FirstHashElementIndentation: Enabled: false # EnforcedStyle: consistent # A maximum line length tends to impede development more than it helps readability. Layout/LineLength: Enabled: false # Having an explicit return can often improve readability. Style/RedundantReturn: Enabled: false # A comment at the top of every file is not worth the minor benefits of frozen strings. # Besides, Ruby is in the process of freezing strings by default anyway. Style/FrozenStringLiteralComment: Enabled: false # Explicitly freezing every constant is too verbose, and provides minor benefits regardless. Style/MutableConstant: Enabled: false # Mandating top-level documentation comments and the like will more often than not lead to meaningless documentation. # Let people choose what does and does not need to be documented. Style/Documentation: Enabled: false # While using a guard clause reduces indentation and lines of code, it is not always the most logical flow. # Let people choose which is best depending on the scenario. Style/GuardClause: Enabled: false # TODO Style/ClassVars: Enabled: false # TODO Style/GlobalVars: Enabled: false # TODO Style/FormatStringToken: Enabled: false # TODO Style/MultilineBlockChain: Enabled: false # The only numeric literals in the codebase long enough to trip this are kilobyte sizes, for which a thousands separator does not improve readability. Style/NumericLiterals: Enabled: false # TODO Style/RedundantStringEscape: Enabled: false # Enabling Metrics results in offenses that essentially mandate the arbitrary splitting of logic into additional files and methods. # Even the rubocop codebase itself often inline disables these offfenses, so lets save the time and disable them all here. Metrics: Enabled: false # We disable this for packages because we don't want to incorrectly convert things like Xz_java into XzJava. # Many package names include - or _ and we don't want to lose that information by mistakenly converting into CamelCase. Naming/ClassAndModuleCamelCase: Exclude: - /**/packages/* # If there is meaningful information to convey about the contents of a heredoc, a comment is the best way to do it. # Forcing unique names for all heredoc delimiters does not improve documentation in the vast majority of cases. Naming/HeredocDelimiterNaming: Enabled: false # Many predicate methods (methods returning either true or false) are made more readable by having an ? at the end, but not all. # A manual inspection should suffice to determine which is which. Naming/PredicateMethod: Enabled: false # We allow all caps variables to mirror our constants, so things like @ARCH_LDFLAGS are allowed. Naming/VariableName: EnforcedStyle: snake_case # Allow variable names which are in all caps (with optional numbers and underscores) AllowedPatterns: - '^@?[A-Z0-9_]+$'