Skip to content

fix(ci): install Periphery from Homebrew core - #1190

Open
hezhizhen wants to merge 1 commit into
rime:masterfrom
hezhizhen:codex/fix-periphery-install
Open

hezhizhen wants to merge 1 commit into
rime:masterfrom
hezhizhen:codex/fix-periphery-install

Conversation

@hezhizhen

Copy link
Copy Markdown
Contributor

CI fails at brew install peripheryapp/periphery/periphery because the tap's cask uses the disabled depends_on macos: :catalina declaration. Both commit CI and release CI hit this error after successfully building Squirrel.

Use brew install periphery in all three workflows to install the Homebrew core formula instead. Core currently provides Periphery 3.8.0. The formula is deprecated and scheduled for disablement on 2027-08-12; its eventual replacement is a separate follow-up.

Validation: all three workflow files parse as YAML, and git diff --check passes. Full build and scanning validation is left to this PR's CI.

@lotem

lotem commented Oct 18, 2026

Copy link
Copy Markdown
Member
$ brew info periphery
==> periphery (deprecated): stable 3.8.0 (bottled), HEAD
Identify unused code in Swift projects
https://github.com/peripheryapp/periphery
Deprecated because it has an archived upstream repository! It will be disabled on 2027-08-12.
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/p/periphery.rb
License: MIT

And the project has posted this notice:

Important

Periphery has transitioned from an open-source project to a commercial product. This change will support the continued maintenance of Periphery and the development of more advanced features.

This repository is preserved as a historical record of the original open-source project and will remain available for anyone who wishes to fork and continue building upon it.

All existing issues have been migrated to the new issue tracker. Please use that repository to browse existing issues or report a new one.

Shall we avoid using it since it will be eventually unavailable?

@hezhizhen

Copy link
Copy Markdown
Contributor Author

I agree that we should move away from Periphery.

I compared SwiftLint 0.65.1’s unused_declaration analyzer with Periphery 3.8.0 locally, using Xcode 27.1. Both detected the unused ReservedPropertyValue.empty case in Squirrel and basic unused declarations in controlled test cases, but there were some differences:

  • SwiftLint incorrectly flagged Squirrel’s @main entry point and missed a function called only by another unused function. Periphery handled both cases correctly.
  • SwiftLint skipped a truly unused @objc method that Periphery detected.
  • Periphery incorrectly flagged a working callback invoked through NSSelectorFromString as unused, while SwiftLint did not.

These were limited local tests. Would you prefer replacing Periphery with another unused-code checker? If so, I suggest making that change in a separate PR, with a more thorough comparison of the alternatives.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants