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:
Enabled: true
inherit_mode:
override:
- Include
Include:
- "**/*.rbi"
Exclude:
- "Taps/**/*"
- "/**/{Formula,Casks}/**/*.rb"
- "**/{Formula,Casks}/**/*.rb"
- "Homebrew/test/**/*.rb"
Sorbet/TrueSigil:
Enabled: true

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
# typed: true
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
# 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
# Settings for the build environment.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
# typed: true
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
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
require "ostruct"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
# typed: true
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
# 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
require "cache_store"

View File

@ -1,4 +1,4 @@
# typed: true
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
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
require "abstract_command"

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
# typed: true
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
# 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
require "compilers"

View File

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

View File

@ -1,4 +1,4 @@
# typed: true
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
# 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
class IO

View File

@ -1,4 +1,4 @@
# typed: true
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
# 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
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
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
require "os/linux/glibc"

View File

@ -1,4 +1,4 @@
# typed: true
# typed: true # rubocop:todo Sorbet/StrictSigil
# frozen_string_literal: true
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
require "tempfile"

View File

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

View File

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

View File

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

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