rubocop: Use Sorbet/StrictSigil as it's better than comments

- Previously I thought that comments were fine to discourage people from
  wasting their time trying to bump things that used `undef` that Sorbet
  didn't support. But RuboCop is better at this since it'll complain if
  the comments are unnecessary.

- Suggested in https://github.com/Homebrew/brew/pull/18018#issuecomment-2283369501.

- I've gone for a mixture of `rubocop:disable` for the files that can't
  be `typed: strict` (use of undef, required before everything else, etc)
  and `rubocop:todo` for everything else that should be tried to make
  strictly typed. There's no functional difference between the two as
  `rubocop:todo` is `rubocop:disable` with a different name.

- And I entirely disabled the cop for the docs/ directory since
  `typed: strict` isn't going to gain us anything for some Markdown
  linting config files.

- This means that now it's easier to track what needs to be done rather
  than relying on checklists of files in our big Sorbet issue:

```shell
$ git grep 'typed: true # rubocop:todo Sorbet/StrictSigil' | wc -l
    268
```

- And this is confirmed working for new files:

```shell
$ git status
On branch use-rubocop-for-sorbet-strict-sigils
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Library/Homebrew/bad.rb
        Library/Homebrew/good.rb

nothing added to commit but untracked files present (use "git add" to track)

$ brew style
Offenses:

bad.rb:1:1: C: Sorbet/StrictSigil: Sorbet sigil should be at least strict got true.
^^^^^^^^^^^^^

1340 files inspected, 1 offense detected
```
This commit is contained in:
Issy Long 2024-08-12 10:30:59 +01:00
parent c8732c6a94
commit 45978435e7
No known key found for this signature in database
277 changed files with 284 additions and 280 deletions

View File

@ -274,11 +274,11 @@ Sorbet/RedundantExtendTSig:
Sorbet/StrictSigil: Sorbet/StrictSigil:
Enabled: true Enabled: true
inherit_mode: Exclude:
override: - "Taps/**/*"
- Include - "/**/{Formula,Casks}/**/*.rb"
Include: - "**/{Formula,Casks}/**/*.rb"
- "**/*.rbi" - "Homebrew/test/**/*.rb"
Sorbet/TrueSigil: Sorbet/TrueSigil:
Enabled: true Enabled: true

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "forwardable" require "forwardable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "api/analytics" require "api/analytics"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Homebrew module Homebrew

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "extend/cachable" require "extend/cachable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "downloadable" require "downloadable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "extend/cachable" require "extend/cachable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
# This script is loaded by formula_installer as a separate instance. # This script is loaded by formula_installer as a separate instance.

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
# Settings for the build environment. # Settings for the build environment.

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
# Options for a formula build. # Options for a formula build.

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "system_command" require "system_command"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "json" require "json"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "attrable" require "attrable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/abstract_artifact" require "cask/artifact/abstract_artifact"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "timeout" require "timeout"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/symlinked" require "cask/artifact/symlinked"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/abstract_artifact" require "cask/artifact/abstract_artifact"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/moved" require "cask/artifact/moved"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/symlinked" require "cask/artifact/symlinked"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/moved" require "cask/artifact/moved"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/relocated" require "cask/artifact/relocated"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "plist" require "plist"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/moved" require "cask/artifact/moved"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/abstract_artifact" require "cask/artifact/abstract_artifact"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/abstract_artifact" require "cask/artifact/abstract_artifact"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/relocated" require "cask/artifact/relocated"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/abstract_uninstall" require "cask/artifact/abstract_uninstall"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/abstract_uninstall" require "cask/artifact/abstract_uninstall"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Cask module Cask

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "attrable" require "attrable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/audit" require "cask/audit"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "attrable" require "attrable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/cache" require "cask/cache"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "utils/user" require "utils/user"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "json" require "json"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "downloadable" require "downloadable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "attrable" require "attrable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/utils" require "cask/utils"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "attrable" require "attrable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "delegate" require "delegate"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "unpack_strategy" require "unpack_strategy"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "delegate" require "delegate"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Cask module Cask

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Cask module Cask

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "attrable" require "attrable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/artifact/relocated" require "cask/artifact/relocated"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module OS module OS

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Cask module Cask

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/cask_loader" require "cask/cask_loader"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask/macos" require "cask/macos"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "development_tools" require "development_tools"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Cask module Cask

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "utils/user" require "utils/user"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "tab" require "tab"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Cask module Cask

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "source_location" require "source_location"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "utils/user" require "utils/user"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "requirement" require "requirement"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "language/python" require "language/python"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
# Cleans a newly installed keg. # Cleans a newly installed keg.

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "utils/bottles" require "utils/bottles"

View File

@ -1,4 +1,4 @@
# typed: true # This cannot be `# typed: strict` due to the use of `undef`. # typed: true # rubocop:disable Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "ostruct" require "ostruct"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "delegate" require "delegate"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "abstract_command" require "abstract_command"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "abstract_command" require "abstract_command"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "abstract_command" require "abstract_command"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "abstract_command" require "abstract_command"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
# Helper functions for commands. # Helper functions for commands.

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module CompilerConstants module CompilerConstants

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "utils/link" require "utils/link"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "monitor" require "monitor"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "compilers" require "compilers"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "attrable" require "attrable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "irb" require "irb"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "options" require "options"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "delegate" require "delegate"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cask_dependent" require "cask_dependent"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "dependable" require "dependable"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "dependency" require "dependency"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
# Helper module for handling `disable!` and `deprecate!`. # Helper module for handling `disable!` and `deprecate!`.

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "cache_store" require "cache_store"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "formula" require "formula"

View File

@ -1,4 +1,4 @@
# typed: true # This cannot be `# typed: strict` due to the use of `undef`. # typed: true # rubocop:disable Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "abstract_command" require "abstract_command"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "keg" require "keg"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "json" require "json"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "url" require "url"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
# Raised when a command is used wrong. # Raised when a command is used wrong.

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "compilers" require "compilers"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "extend/ENV/shared" require "extend/ENV/shared"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
# Used to substitute common paths with generic placeholders when generating JSON for the API. # Used to substitute common paths with generic placeholders when generating JSON for the API.

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
class IO class IO

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
# Contains shorthand Homebrew utility methods like `ohai`, `opoo`, `odisabled`. # Contains shorthand Homebrew utility methods like `ohai`, `opoo`, `odisabled`.

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "simulate_system" require "simulate_system"

View File

@ -1,4 +1,4 @@
# typed: true # This cannot be `# typed: strict` due to the use of `undef`. # typed: true # rubocop:disable Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Homebrew module Homebrew

View File

@ -1,4 +1,4 @@
# typed: true # This cannot be `# typed: strict` due to the use of `undef`. # typed: true # rubocop:disable Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "os/linux/glibc" require "os/linux/glibc"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
class DevelopmentTools class DevelopmentTools

View File

@ -1,4 +1,4 @@
# typed: true # This cannot be `# typed: strict` due to the use of `undef`. # typed: true # rubocop:disable Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
require "tempfile" require "tempfile"

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module SharedEnvExtension module SharedEnvExtension

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Stdenv module Stdenv

View File

@ -1,4 +1,4 @@
# typed: true # typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true # frozen_string_literal: true
module Superenv module Superenv

Some files were not shown because too many files have changed in this diff Show More