Sorbet/Refinement: Description: >- Checks for the use of Ruby Refinements library. Refinements add complexity and incur a performance penalty that can be significant for large code bases. They are also not supported by Sorbet. Enabled: pending VersionAdded: '<>' inherit_mode: merge: - Exclude Sorbet/AllowIncompatibleOverride: Description: 'Disallows using `.override(allow_incompatible: true)`.' Enabled: true VersionAdded: 0.2.0 Sorbet/BindingConstantWithoutTypeAlias: Description: >- Disallows binding the return value of `T.any`, `T.all`, `T.enum` to a constant directly. To bind the value, one must use `T.type_alias`. Enabled: true VersionAdded: 0.2.0 Sorbet/CallbackConditionalsBinding: Description: 'Ensures callback conditionals are bound to the right type.' Enabled: false Safe: false VersionAdded: 0.7.0 Sorbet/CheckedTrueInSignature: Description: 'Disallows the usage of `checked(true)` in signatures.' Enabled: true VersionAdded: 0.2.0 Sorbet/EmptyLineAfterSig: Description: 'Ensures that there are no blank lines after signatures' Enabled: true VersionAdded: 0.7.0 Sorbet/ConstantsFromStrings: Description: >- Forbids constant access through meta-programming. For example, things like `constantize` or `const_get` are forbidden. Enabled: true VersionAdded: 0.2.0 Sorbet/EnforceSigilOrder: Description: 'Ensures that Sorbet sigil comes first in a file.' Enabled: true VersionAdded: 0.3.4 Sorbet/EnforceSingleSigil: Description: 'Ensures that there is only one Sorbet sigil in a file.' Enabled: true VersionAdded: 0.7.0 Sorbet/EnforceSignatures: Description: 'Ensures all methods have a valid signature.' Enabled: false VersionAdded: 0.3.4 Sorbet/FalseSigil: Description: 'All files must be at least at strictness `false`.' Enabled: true VersionAdded: 0.3.3 SuggestedStrictness: "false" Include: - "**/*.{rb,rbi,rake,ru}" Exclude: - bin/**/* - db/**/*.rb - script/**/* Sorbet/ForbidExtendTSigHelpersInShims: Description: 'Forbid the use of `extend T::Sig` and `extend T::Helpers` in RBI shims' Enabled: true VersionAdded: '0.6.0' Include: - "**/*.rbi" Sorbet/ForbidRBIOutsideOfAllowedPaths: Description: 'Forbids RBI files outside of the allowed paths' Enabled: true VersionAdded: 0.6.1 AllowedPaths: - "rbi/**" - "sorbet/rbi/**" Include: - "**/*.rbi" Sorbet/ForbidIncludeConstLiteral: Description: 'Forbids include of non-literal constants.' Enabled: false VersionAdded: 0.2.0 VersionChanged: 0.5.0 Sorbet/ForbidTypeAliasedShapes: Description: 'Forbids defining type aliases that contain shapes' Enabled: false VersionAdded: 0.7.6 Sorbet/ForbidSuperclassConstLiteral: Description: 'Forbid superclasses which are non-literal constants.' Enabled: false VersionAdded: 0.2.0 VersionChanged: 0.6.1 Exclude: - db/migrate/*.rb Sorbet/ForbidTStruct: Description: 'Forbid usage of T::Struct.' Enabled: false VersionAdded: <> VersionChanged: <> Safe: false Sorbet/ForbidTUnsafe: Description: 'Forbid usage of T.unsafe.' Enabled: false VersionAdded: 0.7.0 VersionChanged: 0.7.0 Sorbet/ForbidTUntyped: Description: 'Forbid usage of T.untyped' Enabled: false VersionAdded: 0.6.9 VersionChanged: 0.7.0 Sorbet/ForbidUntypedStructProps: Description: >- Disallows use of `T.untyped` or `T.nilable(T.untyped)` as a prop type for `T::Struct` subclasses. Enabled: true VersionAdded: 0.4.0 Sorbet/HasSigil: Description: 'Makes the Sorbet typed sigil mandatory in all files.' Enabled: false SuggestedStrictness: "false" MinimumStrictness: nil ExactStrictness: nil VersionAdded: 0.3.3 Include: - "**/*.{rb,rbi,rake,ru}" Exclude: - bin/**/* - db/**/*.rb - script/**/* Sorbet/IgnoreSigil: Description: 'All files must be at least at strictness `ignore`.' Enabled: false SuggestedStrictness: "ignore" VersionAdded: 0.3.3 Include: - "**/*.{rb,rbi,rake,ru}" Exclude: - bin/**/* - db/**/*.rb - script/**/* Sorbet/ImplicitConversionMethod: Description: >- This cop disallows declaring implicit conversion methods, as sorbet does not support implicit conversion. Enabled: false VersionAdded: '<>' Sorbet/KeywordArgumentOrdering: Description: >- Enforces a compatible keyword arguments with Sorbet. All keyword arguments must be at the end of the parameters list, and all keyword arguments with a default value must be after those without default values. Enabled: true VersionAdded: 0.2.0 Sorbet/ObsoleteStrictMemoization: Description: >- This cop checks for the obsolete pattern for initializing instance variables that was required for older Sorbet versions in `#typed: strict` files. It's no longer required, as of Sorbet 0.5.10210 See https://sorbet.org/docs/type-assertions#put-type-assertions-behind-memoization Enabled: true VersionAdded: '0.7.1' Safe: true SafeAutoCorrect: true Sorbet/BuggyObsoleteStrictMemoization: Description: >- Checks for the a mistaken variant of the "obsolete memoization pattern" that used to be required for older Sorbet versions in `#typed: strict` files. The mistaken variant would overwrite the ivar with `nil` on every call, causing the memoized value to be discarded and recomputed on every call. This cop will correct it to read from the ivar instead of `nil`, which will memoize it correctly. The result of this correction will be the "obsolete memoization pattern", which can further be corrected by the `Sorbet/ObsoleteStrictMemoization` cop. See `Sorbet/ObsoleteStrictMemoization` for more details. Enabled: true VersionAdded: '0.7.3' Safe: true SafeAutoCorrect: false Sorbet/RedundantExtendTSig: Description: >- Forbid the usage of redundant `extend T::Sig`. Only for use in applications that monkey patch `Module.include(T::Sig)` directly, where it is useful to reduce noise. Enabled: false Safe: false VersionAdded: 0.7.0 Sorbet/SignatureBuildOrder: Description: >- Enforces the order of parts in a signature. The order is first inheritance related builders, then params, then return and finally the modifier such as: `abstract.params(...).returns(...).soft`.' Enabled: true Order: - final - abstract - implementation - override - overridable - type_parameters - params - bind - returns - void - soft - checked - on_failure VersionAdded: 0.3.0 Sorbet/SingleLineRbiClassModuleDefinitions: Description: 'Empty class and module definitions in RBI must be on a single line.' Enabled: false VersionAdded: '0.6.0' Include: - "**/*.rbi" Sorbet/StrictSigil: Description: 'All files must be at least at strictness `strict`.' Enabled: false SuggestedStrictness: "strict" VersionAdded: 0.3.3 Include: - "**/*.{rb,rbi,rake,ru}" Exclude: - bin/**/* - db/**/*.rb - script/**/* Sorbet/StrongSigil: Description: 'All files must be at least at strictness `strong`.' Enabled: false SuggestedStrictness: "strong" VersionAdded: 0.3.3 Include: - "**/*.{rb,rbi,rake,ru}" Exclude: - bin/**/* - db/**/*.rb - script/**/* Sorbet/TrueSigil: Description: 'All files must be at least at strictness `true`.' Enabled: false SuggestedStrictness: "true" VersionAdded: 0.3.3 Include: - "**/*.{rb,rbi,rake,ru}" Exclude: - bin/**/* - db/**/*.rb - script/**/* Sorbet/TypeAliasName: Description: 'Type alias constant names must be in CamelCase.' Enabled: true VersionAdded: 0.6.6 Include: - "**/*.{rb,rbi,rake,ru}" Exclude: - bin/**/* - db/**/*.rb - script/**/* Sorbet/ValidSigil: Description: 'All files must have a valid sigil.' Enabled: true RequireSigilOnAllFiles: false SuggestedStrictness: "false" MinimumStrictness: nil ExactStrictness: nil VersionAdded: 0.3.3 Include: - "**/*.{rb,rbi,rake,ru}" Exclude: - bin/**/* - db/**/*.rb - script/**/* Sorbet/VoidCheckedTests: Description: 'Forbid `.void.checked(:tests)`' Enabled: true VersionAdded: 0.7.7 Sorbet/MultipleTEnumValues: Description: 'Ensures that all `T::Enum`s have multiple values.' Enabled: true VersionAdded: 0.8.2 Sorbet/ForbidComparableTEnum: Description: 'Disallows including the `Comparable` module in a `T::Enum`.' Enabled: true VersionAdded: 0.8.2