Swift & SwiftUI Development Tools
Date: 2026-03-29 Context: Tools for Swift/SwiftUI development across all Apple platforms, integrated with Claude Code.
Linters & Formatters (implement/verify)
SwiftLint
- Link: github.com/realm/SwiftLint
- Description: The de facto standard linter for Swift. Enforces style and conventions based on community-accepted rules. Supports over 200 configurable rules (lint rules and opt-in analyzer rules). Configuration via
.swiftlint.yml. Analyzer mode (swiftlint analyze) uses the full type-checked AST for deeper static analysis (slower, opt-in). Supports baselines to diff violations against a known state. Swift 6 compatible. - Loop phase: implement (real-time feedback), verify (CI gate)
- Install:
brew install swiftlint # Homebrew mint install realm/SwiftLint # Mint # Or add SwiftLintPlugins as SPM dependency - Claude Code integration: Shell out to
swiftlint lint --path <file>orswiftlint lint --reporter jsonfor structured output. Useswiftlint analyze --compiler-log-path <log>for deeper analysis. Parse JSON reporter output for actionable diagnostics. - Platforms: iOS, macOS, watchOS, tvOS, visionOS (runs on macOS and Linux)
SwiftFormat (Nick Lockwood)
- Link: github.com/nicklockwood/SwiftFormat
- Description: Opinionated code formatter that adjusts whitespace, removes redundant syntax (parentheses,
self, etc.), and enforces consistent style. Over 70 formatting rules. Highly configurable via.swiftformatconfig file. Can infer project style with--infer-options. Actively maintained with version 0.55+. - Loop phase: implement (format-on-save), verify (CI check)
- Install:
brew install swiftformat mint install nicklockwood/SwiftFormat - Claude Code integration: Shell out to
swiftformat <path> --dryrun --verboseto preview changes, orswiftformat <path>to apply. Useswiftformat stdinfor piping. Supports--lintmode that reports without modifying (exit code 1 on violations). - Platforms: iOS, macOS, watchOS, tvOS, visionOS (runs on macOS, Linux, Windows)
swift-format (Apple Official)
- Link: github.com/swiftlang/swift-format
- Description: Apple's official formatting technology, built on SwiftSyntax. Included in the Swift 6+ toolchain (invoked as
swift formatwith a space). Provides both formatting and linting. No official Swift style guide yet -- the style applied is one possibility. Configuration via.swift-formatJSON file. Used by SourceKit-LSP. - Loop phase: implement (format-on-save), verify (CI check)
- Install:
# Included with Swift 6+ toolchain / Xcode 16+ swift format --version # Or as SPM dependency: .package(url: "https://github.com/swiftlang/swift-format", from: "600.0.0") - Claude Code integration: Shell out to
swift format <file>to format,swift format lint <file>to lint. JSON output not natively supported; parse stderr for diagnostics. Best for projects that want to stay purely within Apple's toolchain. - Platforms: iOS, macOS, watchOS, tvOS, visionOS (runs on macOS and Linux)
Periphery
- Link: github.com/peripheryapp/periphery
- Description: Static analysis tool that detects unused Swift code -- classes, structs, protocols, functions, properties, enum cases, function parameters, protocol conformances, and redundant public accessibility. Works by building the project to generate an index store, then constructing an in-memory dependency graph. Version 3.0 added significant improvements. Essential for codebase hygiene.
- Loop phase: verify (periodic cleanup, CI gate)
- Install:
brew install periphery mint install peripheryapp/periphery - Claude Code integration: Shell out to
periphery scan --setupfor interactive guided setup, thenperiphery scan --format jsonfor structured output. Parse JSON results to identify dead code. Can integrate into CI withperiphery scan --strict(non-zero exit on findings). - Platforms: iOS, macOS, watchOS, tvOS, visionOS (runs on macOS and Linux)
Tailor (Legacy)
- Link: github.com/sleekbyte/tailor
- Description: Cross-platform static analyzer and linter for Swift. Written in Java. Supports Swift 2.x/3.x. Effectively unmaintained -- last meaningful updates targeted Swift 3.0. Not recommended for new projects; included for historical reference. SwiftLint has fully superseded it.
- Loop phase: verify
- Install:
brew install tailor(if available) - Claude Code integration: Not recommended. Use SwiftLint instead.
- Platforms: macOS, Linux, Windows (Java-based)
Testing Frameworks (verify)
Swift Testing (Apple)
- Link: developer.apple.com/xcode/swift-testing
- Description: Apple's modern testing framework, introduced at WWDC24, shipping with Swift 6 and Xcode 16+. Uses
@Testand@Suitemacros for expressive, Swift-native test declarations. Parameterized tests, traits for configuration, parallel execution by default, full Swift Concurrency integration. Coexists with XCTest -- migrate incrementally. Does not yet support UI automation (XCUIApplication) or performance metrics (XCTMetric); use XCTest for those. - Loop phase: verify
- Install:
# Built into Swift 6+ toolchain / Xcode 16+ # Import in test target: import Testing - Claude Code integration: Shell out to
swift testorxcodebuild test. Parse stdout for@Testresults. Useswift test --filter <pattern>to run specific tests. JSON output available viaswift test --format json(Swift 6.1+). - Platforms: iOS, macOS, watchOS, tvOS, visionOS
XCTest (Apple)
- Link: developer.apple.com/documentation/xctest
- Description: Apple's original testing framework. Provides unit testing (
XCTestCase), UI testing (XCUIApplication), and performance testing (XCTMetric,measure {}). Mature, stable, universally supported. Still required for UI automation and performance benchmarks. Runs viaxcodebuild testorswift test. - Loop phase: verify
- Install:
# Built into Xcode and Swift toolchain import XCTest - Claude Code integration: Shell out to
xcodebuild test -scheme <scheme> -destination <dest>orswift test. Use-resultBundlePathfor structured results, then parse withxcresulttool. Usexcodebuild test -only-testing:<target>/<class>/<method>for targeted runs. - Platforms: iOS, macOS, watchOS, tvOS, visionOS
Quick / Nimble
- Link: github.com/Quick/Quick | github.com/Quick/Nimble
- Description: BDD-style testing framework (Quick) paired with a matcher framework (Nimble). Quick provides
describe/context/itblocks inspired by RSpec. Nimble provides expressive matchers (expect(x).to(equal(y))). Quick 7.x and Nimble 14.x are current. Good for teams that prefer BDD-style test organization. - Loop phase: verify
- Install:
// Package.swift .package(url: "https://github.com/Quick/Quick", from: "7.0.0"), .package(url: "https://github.com/Quick/Nimble", from: "13.0.0") - Claude Code integration: Tests run via standard
swift testorxcodebuild test. No special CLI needed. Parse test output as usual. - Platforms: iOS, macOS, watchOS, tvOS, visionOS, Linux
swift-snapshot-testing (Point-Free)
- Link: github.com/pointfreeco/swift-snapshot-testing
- Description: Snapshot testing library that captures and compares artifacts (images, text, JSON, custom formats). Supports Swift Testing (beta) and XCTest. Version 1.17+ adds
withSnapshotTestingfor scoped configuration. Extensible snapshot strategies for SwiftUI views, UIKit views, Codable values, and more. Essential for UI regression testing. - Loop phase: verify
- Install:
// Package.swift (add to test targets only) .package(url: "https://github.com/pointfreeco/swift-snapshot-testing", from: "1.17.0") - Claude Code integration: Run via
swift test. When snapshots fail, diffs are written to__Snapshots__directories. Shell out to compare or regenerate withSNAPSHOT_TESTING_RECORD=1 swift test(env var). Cannot visually inspect images from CLI, but text/JSON snapshots are diffable. - Platforms: iOS, macOS, tvOS, Linux
ViewInspector
- Link: github.com/nalexn/ViewInspector
- Description: Runtime introspection library for unit testing SwiftUI views. Traverses the compiled view hierarchy to inspect view structures, attributes, modifiers, and trigger callbacks. Two testing surfaces: "outside" (rendered structure) and "inside" (state and injected references). Version 0.10.x is current. Fills the gap left by Apple's lack of official SwiftUI unit testing support.
- Loop phase: verify
- Install:
// Package.swift (add to test targets only) .package(url: "https://github.com/nalexn/ViewInspector", from: "0.10.0") - Claude Code integration: Tests run via standard
swift test. No special CLI. Write tests that traverse view hierarchy and assert on properties. Parse standard test output. - Platforms: iOS, macOS, watchOS, tvOS, visionOS, Linux
swift-custom-dump (Point-Free)
- Link: github.com/pointfreeco/swift-custom-dump
- Description: Debugging and testing toolkit providing:
customDump()for pretty-printing any value,diff()for visual diffs between values, andXCTAssertNoDifference/expectNoDifference(Swift Testing) for assertions with rich failure messages. Far superior toXCTAssertEqualfor complex types. Swift 6 and Swift Testing compatible. - Loop phase: verify (better test diagnostics)
- Install:
// Package.swift .package(url: "https://github.com/pointfreeco/swift-custom-dump", from: "1.0.0") - Claude Code integration: Use in test targets for better failure output. Run via
swift test. The improved diff output in test failures makes diagnosing issues from CLI much easier. - Platforms: iOS, macOS, watchOS, tvOS, visionOS, Linux
Code Generation (implement)
Sourcery
- Link: github.com/krzysztofzablocki/Sourcery
- Description: Meta-programming code generator for Swift, built on SwiftSyntax. Uses Stencil, EJS, or Swift templates to generate boilerplate code -- mocks, equatable conformances, enum cases, lenses, and arbitrary patterns. Used in 40,000+ projects (Airbnb, Bumble, NYT). Version 2.3.x is current. Supports daemon mode for live regeneration. Helped push Apple toward derived conformances.
- Loop phase: implement (generate before build)
- Install:
brew install sourcery mint install krzysztofzablocki/Sourcery - Claude Code integration: Shell out to
sourcery --sources <path> --templates <path> --output <path>. Use--watchfor continuous regeneration during development. Use--argsto pass template parameters. Parse generated files to verify output. - Platforms: iOS, macOS, watchOS, tvOS, visionOS (runs on macOS and Linux)
SwiftGen
- Link: github.com/SwiftGen/SwiftGen
- Description: Generates type-safe Swift code for project resources: asset catalogs (images, colors, symbols, AR resources, data sets), localized strings, fonts, storyboards/XIBs, Core Data models, plists, JSON/YAML files, colors (from text/JSON/XML/.clr), and file/directory structures. Eliminates stringly-typed resource access. Version 6.6.x is current. Customizable via Stencil templates. Configuration via
swiftgen.yml. - Loop phase: implement (generate before build)
- Install:
brew install swiftgen mint install SwiftGen/SwiftGen pod 'SwiftGen', '~> 6.0' - Claude Code integration: Shell out to
swiftgen config run(usesswiftgen.yml) orswiftgen <subcommand>for individual resource types. Useswiftgen config generate-xcfilelistto generate input/output file lists for Xcode build phases. - Platforms: iOS, macOS, watchOS, tvOS, visionOS (runs on macOS)
Needle (Uber)
- Link: github.com/uber/needle
- Description: Compile-time safe dependency injection framework from Uber. Generates DI code during compilation so missing dependencies fail at build time, not runtime. Core concepts: dependency protocols, components, and child component instantiation. Designed for large-scale apps with complex dependency graphs. Requires both
NeedleFoundationframework and a code generator binary. - Loop phase: implement (generate DI code before build)
- Install:
brew install needle # Or add NeedleFoundation as SPM dependency .package(url: "https://github.com/uber/needle", from: "0.24.0") - Claude Code integration: Shell out to the needle code generator as a build phase. Verify compile-time safety by running
swift buildafter generation. Not directly useful as a standalone CLI tool; integrated into the build pipeline. - Platforms: iOS, macOS, watchOS, tvOS, visionOS
swift-dependencies (Point-Free)
- Link: github.com/pointfreeco/swift-dependencies
- Description: Lightweight dependency management library inspired by SwiftUI's environment. Uses
@Dependencymacro and Swift Task Locals for context-propagated dependency injection. Version 1.11.x is current. Supports Swift 6.1'sTestScopingfor reliable test injection. Not a code generator per se, but provides the@DependencyClientmacro for generating dependency interfaces. - Loop phase: implement (architecture pattern)
- Install:
// Package.swift .package(url: "https://github.com/pointfreeco/swift-dependencies", from: "1.0.0") - Claude Code integration: Not a CLI tool. Used as a library dependency. Claude Code can scaffold
@Dependencyand@DependencyClientdeclarations when generating new features. - Platforms: iOS, macOS, watchOS, tvOS, visionOS, Linux
Package Management (implement)
Swift Package Manager (SPM)
- Link: github.com/swiftlang/swift-package-manager | swift.org/documentation/package-manager
- Description: Apple's official package manager, built into the Swift toolchain and Xcode. Defines dependencies in
Package.swift. Resolves versions viaPackage.resolved. Swift 6.1+ adds strict mode for tighter version matching, dry-run updates, dependency graph visualization, and package info commands. The standard for modern Swift projects. - Loop phase: implement
- Key CLI commands:
swift package init --type executable|library swift build swift test swift run <executable> swift package resolve swift package update swift package show-dependencies --format json swift package show-dependencies --format dot # dependency graph swift package clean swift package reset # removes .build + Package.resolved swift package purge-cache swift package plugin <command> # run command plugins - Claude Code integration: Direct shell-out to all commands above.
swift package show-dependencies --format jsonprovides structured dependency data.swift build 2>&1captures build errors.swift test --filter <pattern>for targeted testing. - Platforms: iOS, macOS, watchOS, tvOS, visionOS, Linux, Windows
CocoaPods (Legacy -- Sunsetting)
- Link: cocoapods.org | github.com/CocoaPods/CocoaPods
- Description: Legacy dependency manager for Swift and Objective-C. Trunk goes read-only December 2, 2026. No new pods can be published after that date. Google dropping CocoaPods support for iOS SDKs after Q2 2026. Migrate to SPM. Still functional for existing projects during transition period.
- Loop phase: implement (legacy maintenance only)
- Install:
sudo gem install cocoapods pod install pod update - Claude Code integration: Shell out to
pod install,pod update,pod outdated. ParsePodfile.lockfor dependency analysis. Prioritize migrating to SPM. - Platforms: iOS, macOS, watchOS, tvOS
Mint
- Link: github.com/yonaskolb/Mint
- Description: Package manager for installing and running Swift CLI tools. Installs executables from any Swift package with an executable target. Supports multiple versions side-by-side. Central cache. Version 0.18.x is current. Ideal for managing project-specific tool versions (SwiftLint, SwiftFormat, Sourcery, etc.) via a
Mintfile. - Loop phase: implement (tool management)
- Install:
brew install mint - Key commands:
mint install <repo>@<version> # install a tool mint run <repo> <command> # run without global install mint bootstrap # install all tools from Mintfile mint list # list installed tools - Claude Code integration: Shell out to
mint run <tool> <args>for reproducible tool execution. UseMintfilefor version-pinned tool management across the team.mint bootstrapensures all tools are available. - Platforms: macOS, Linux
Static Analysis (verify)
SwiftLint Analyzer Mode
- Link: github.com/realm/SwiftLint (same tool, different mode)
- Description: SwiftLint's
analyzecommand performs deeper static analysis using the full type-checked AST from a clean build. Analyzer rules are a separate opt-in rule set (enable viaanalyzer_rulesin.swiftlint.yml). Slower than lint mode but catches issues that require type information. Requires passing a compiler log from a clean (non-incremental) build. - Loop phase: verify (CI, periodic deep analysis)
- Usage:
# 1. Do a clean build and capture log xcodebuild clean build -scheme MyApp > build_log.txt 2>&1 # 2. Run analyzer swiftlint analyze --compiler-log-path build_log.txt - Claude Code integration: Two-step process: capture build log, then run analyzer. Parse output for type-aware violations. Best run in CI rather than on every save.
- Platforms: iOS, macOS, watchOS, tvOS, visionOS
Semgrep (Swift GA)
- Link: semgrep.dev/docs/languages/swift
- Description: General-purpose static analysis tool with GA (General Availability) Swift support. 57 Pro rules covering security vulnerability classes (injection, auth, crypto, data exposure). Community Edition supports custom rule writing with Swift pattern matching. Supply Chain scanning supports SPM lockfiles. Pro Engine provides framework-specific analysis not available in CE.
- Loop phase: verify (security scanning, CI gate)
- Install:
pip install semgrep # or brew install semgrep - Usage:
semgrep scan --config auto . # auto-detect rules semgrep scan --config p/swift . # Swift-specific rules semgrep scan --config r/swift.lang.security . # security rules - Claude Code integration: Shell out to
semgrep scan --json --config auto <path>for structured output. Write custom.semgrep.ymlrules for project-specific patterns. MCP integration available via Semgrep plugin for real-time scanning. - Platforms: iOS, macOS, watchOS, tvOS, visionOS (runs on macOS, Linux)
SonarQube (Swift)
- Link: sonarsource.com/knowledge/languages/swift
- Description: Enterprise code quality platform with native Swift analysis. Built directly in Swift using the official compiler and parser. Supports all Swift versions through 6.2. Available in Developer Edition and above (not Community). Open-source alternatives: sonar-apple (SonarQube 9.9+) and sonar-swift (wraps SwiftLint/Tailor).
- Loop phase: verify (CI/CD quality gate)
- Install: Server-based; configure scanner in CI pipeline
- Claude Code integration: Not directly CLI-invocable. Use
sonar-scannerCLI in CI. Results viewed via web dashboard. For local analysis, SwiftLint + Semgrep provide better CLI integration. - Platforms: iOS, macOS, watchOS, tvOS, visionOS
Swift AST Explorer
- Link: swift-ast-explorer.com | github.com/SwiftFiddle/swift-ast-explorer
- Description: Web-based tool for visualizing the Abstract Syntax Tree of Swift source code. Write Swift on the left, explore the syntax tree on the right. Invaluable for understanding SwiftSyntax node types when writing macros, Sourcery templates, or custom SwiftLint rules. Apache 2.0 licensed.
- Loop phase: plan (understanding code structure)
- Install: Web-based, no install needed
- Claude Code integration: Not CLI-invocable. Reference tool for planning. For programmatic AST access, use SwiftSyntax directly.
- Platforms: Web (browser-based)
Profiling & Performance (verify)
Instruments / xctrace
- Link: developer.apple.com/instruments | man page: xctrace(1)
- Description: Apple's profiling suite. The
xctraceCLI provides full access to Instruments from the command line. Records traces for CPU, memory, SwiftUI view updates, Swift concurrency (Tasks, Actors), animation hitches, disk I/O, network, and more. Xcode 16+ recommends--instrumentover--templatefor reliable export. Outputs.tracefiles analyzable in Instruments.app or viaxctrace export. - Loop phase: verify (performance profiling)
- Key commands:
xctrace record --device <udid> --instrument "Time Profiler" --launch <app> xctrace record --instrument "SwiftUI" --attach <pid> xctrace export --input recording.trace --output data.xml xctrace list instruments # list available instruments xctrace list devices # list available devices - Claude Code integration: Shell out to
xctrace recordfor automated profiling runs. Export to XML withxctrace exportand parse results. Useful for CI performance regression detection. MCP servers exist for Instruments integration (see instruments-profiling on Smithery). - Platforms: iOS, macOS, watchOS, tvOS, visionOS
Memory Graph Debugger
- Link: developer.apple.com/documentation/xcode/gathering-information-about-memory-use
- Description: Xcode tool that captures a snapshot of the object graph to detect retain cycles, leaked allocations, and abandoned memory. Available via Xcode's Debug navigator or
leaksandheapcommand-line tools. Captures.memgraphfiles for offline analysis. - Loop phase: verify (memory debugging)
- Key commands:
leaks --process=<pid> # detect leaks in running process leaks <memgraph_file> # analyze captured memory graph heap <pid> # heap snapshot vmmap <pid> # virtual memory map malloc_history <pid> <address> # allocation history - Claude Code integration: Shell out to
leaks --process=<pid> --outputGraph=leak.memgraphfor automated leak detection. Parseleakstext output for CI integration. Combine withxcrun simctlfor simulator-based testing. - Platforms: iOS, macOS, watchOS, tvOS, visionOS
os_signpost / OSSignposter
- Link: developer.apple.com/documentation/os/ossignposter
- Description: Apple's instrumentation API for marking performance-critical code sections. Place signpost intervals around operations to measure duration in Instruments. Three types: event signposts (point-in-time), interval signposts (begin/end duration), and breadcrumbs (lightweight tracking). Integrated with the unified logging system. OSSignposter is the modern Swift API (replacing C-style
os_signpost). - Loop phase: implement (instrument code), verify (measure in Instruments)
- Install: Built into the OS framework --
import os - Claude Code integration: Not a CLI tool. Claude Code can add signpost instrumentation to source code, then use
xctraceto record and analyze the resulting data. Generate boilerplate signpost code on request. - Platforms: iOS, macOS, watchOS, tvOS, visionOS
MetricKit
- Link: developer.apple.com/documentation/metrickit
- Description: Apple framework for collecting on-device performance and diagnostic data from production apps. Provides
MXMetricPayload(CPU, memory, disk, network, app launch, animation hitches) andMXDiagnosticPayload(crashes, hangs, disk writes). Data delivered daily viaMXMetricManagerSubscriber. Essential for production performance monitoring. - Loop phase: verify (production monitoring)
- Install: Built into iOS 13+ / macOS 12+ --
import MetricKit - Claude Code integration: Not a CLI tool. Claude Code can scaffold MetricKit subscriber code and payload processing. Production data analysis happens server-side.
- Platforms: iOS, macOS (iPadOS, watchOS 9+, visionOS)
Documentation (implement)
DocC (Swift-DocC)
- Link: github.com/swiftlang/swift-docc | swift.org/documentation/docc
- Description: Apple's documentation compiler for Swift frameworks and packages. Generates rich API reference documentation and interactive tutorials from doc comments and markdown articles. Powers most of Apple's developer documentation. Supports customizable symbol access levels, C/C++/Objective-C targets, and static site hosting. swift-docc-plugin integrates with SPM.
- Loop phase: implement (write docs alongside code)
- Install:
# Built into Swift 6+ toolchain # Add plugin for SPM projects: .package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.4.0") - Key commands:
swift package generate-documentation # generate docs swift package generate-documentation --hosting-base-path <path> swift package preview-documentation # local preview server swift package generate-documentation --output-path docs # export - Claude Code integration: Shell out to
swift package generate-documentationto build docs. Preview withswift package preview-documentation --port 8080. Verify doc coverage by checking build warnings for undocumented symbols (use--warnings-as-errors). - Platforms: iOS, macOS, watchOS, tvOS, visionOS, Linux
swift-docc-plugin
- Link: github.com/swiftlang/swift-docc-plugin
- Description: SPM command plugin that integrates Swift-DocC with Swift Package Manager. Enables
swift package generate-documentationandswift package preview-documentationcommands. Version 1.4.x is current. Supports generating documentation for multiple targets, customizing access levels, and exporting for static hosting (GitHub Pages, etc.). - Loop phase: implement
- Install:
// Package.swift .package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.4.0") - Claude Code integration: Same CLI as DocC above. The plugin is the bridge between SPM and DocC.
- Platforms: iOS, macOS, watchOS, tvOS, visionOS, Linux
jazzy (Legacy)
- Link: github.com/realm/jazzy
- Description: Ruby-based documentation generator that produces Apple-style reference docs for Swift and Objective-C. Uses Clang/SourceKit AST or compiled module symbol graphs. Still maintained (last update October 2025) but superseded by DocC for new projects. Useful for projects that need HTML docs without adopting DocC's format, or for Objective-C-heavy codebases.
- Loop phase: implement
- Install:
sudo gem install jazzy # or [sudo] gem install jazzy - Key commands:
jazzy --module MyFramework # generate docs jazzy --module MyFramework --swift-build-tool spm jazzy --sourcekitten-sourcefile data.json # from pre-generated data - Claude Code integration: Shell out to
jazzy --module <name>. Output is HTML indocs/directory. Less structured output than DocC but simpler setup for legacy projects. - Platforms: macOS (generates docs for all Apple platforms)
Dependency Security (verify)
Snyk (Swift/iOS)
- Link: docs.snyk.io/supported-languages/swift-and-objective-c
- Description: Developer security platform with SCA (Software Composition Analysis) and SAST for Swift. SCA scans CocoaPods (
Podfile.lock) and SPM (Package.resolved) dependencies for known vulnerabilities. SAST (Snyk Code) identifies security issues in Swift source code including grpc-swift. Usesswift package show-dependenciesfor SPM dependency graph construction. Requires Swift 3.0+. - Loop phase: verify (security scanning, CI gate)
- Install:
npm install -g snyk # or brew install snyk snyk auth # authenticate - Key commands:
snyk test # scan dependencies for vulnerabilities snyk code test # SAST scan of source code snyk monitor # continuous monitoring snyk test --all-projects # scan all projects in directory - Claude Code integration: Shell out to
snyk test --jsonfor structured vulnerability data.snyk code test --jsonfor SAST results. Parse JSON to surface actionable security findings. Integrate into CI withsnyk test --severity-threshold=high. - Platforms: iOS, macOS (scans projects targeting all Apple platforms)
Semgrep Supply Chain
- Link: semgrep.dev/products/product-updates/swift-support
- Description: Semgrep's supply chain scanning supports Swift via SPM lockfile analysis (
Package.resolved). Detects known vulnerabilities in third-party dependencies. Part of the broader Semgrep platform -- combines with Semgrep Code for both dependency and source-level security scanning. - Loop phase: verify (dependency security)
- Install:
pip install semgrep # or brew install semgrep - Usage:
semgrep ci --supply-chain # supply chain scan in CI - Claude Code integration: Shell out to
semgrep ci --supply-chain --jsonfor structured output. Combines with source scanning in a single tool. - Platforms: iOS, macOS (scans SPM-based projects)
OWASP Dependency-Check (Swift Analyzer)
- Link: jeremylong.github.io/DependencyCheck/analyzers/swift.html
- Description: Open-source SCA tool with an experimental Swift Package Manager analyzer. Scans
Package.swiftto identify dependencies and map them to known CVEs via the NVD (National Vulnerability Database). Free and open-source alternative to commercial SCA tools. Java-based CLI. - Loop phase: verify (dependency security)
- Install:
brew install dependency-check - Usage:
dependency-check --project "MyApp" --scan . --enableExperimental - Claude Code integration: Shell out to
dependency-check --scan . --format JSON --enableExperimentalfor structured output. Parse JSON report for vulnerabilities. Note: Swift analyzer is experimental -- may have false positives/negatives. - Platforms: macOS, Linux (scans SPM projects)
Socket.dev
- Link: socket.dev
- Description: Supply chain security platform that proactively detects malicious and compromised packages. Does not currently support Swift/SPM. Covers JavaScript (npm), Python (PyPI), Go, and Rust ecosystems. Included here for awareness -- may add Swift support in the future as it expands language coverage. Monitor their announcements.
- Loop phase: N/A (no Swift support yet)
- Claude Code integration: N/A
- Platforms: N/A for Swift
Tool Comparison Quick Reference
| Tool | Category | Install | CLI-Friendly | Active (2026) | Recommended |
|---|---|---|---|---|---|
| SwiftLint | Lint | brew/mint/spm | Yes | Yes | Yes |
| SwiftFormat | Format | brew/mint | Yes | Yes | Yes |
| swift-format | Format | toolchain | Yes | Yes | Yes |
| Periphery | Dead code | brew/mint | Yes | Yes | Yes |
| Tailor | Lint | brew | Yes | No | No |
| Swift Testing | Test | toolchain | Yes | Yes | Yes |
| XCTest | Test | toolchain | Yes | Yes | Yes |
| Quick/Nimble | Test | spm | Yes | Yes | Optional |
| swift-snapshot-testing | Test | spm | Yes | Yes | Yes |
| ViewInspector | Test | spm | Yes | Yes | Yes |
| swift-custom-dump | Test | spm | Yes | Yes | Yes |
| Sourcery | Codegen | brew/mint | Yes | Yes | Yes |
| SwiftGen | Codegen | brew/mint | Yes | Yes | Yes |
| Needle | DI | brew/spm | Partial | Yes | Situational |
| swift-dependencies | DI | spm | No (library) | Yes | Yes |
| SPM | Packages | toolchain | Yes | Yes | Yes |
| CocoaPods | Packages | gem | Yes | Sunsetting | Migrate away |
| Mint | Tool mgmt | brew | Yes | Yes | Yes |
| Semgrep | Security/SAST | pip/brew | Yes | Yes | Yes |
| SonarQube | Quality | server | Partial | Yes | Enterprise |
| xctrace | Profiling | toolchain | Yes | Yes | Yes |
| DocC | Docs | toolchain/spm | Yes | Yes | Yes |
| jazzy | Docs | gem | Yes | Maintenance | Legacy |
| Snyk | Security/SCA | npm/brew | Yes | Yes | Yes |
Sources
- SwiftLint - GitHub
- SwiftFormat - GitHub
- swift-format - GitHub
- Periphery - GitHub
- Swift Testing - Apple Developer
- Quick - GitHub
- Nimble - GitHub
- swift-snapshot-testing - GitHub
- ViewInspector - GitHub
- swift-custom-dump - GitHub
- Sourcery - GitHub
- SwiftGen - GitHub
- Needle - GitHub
- swift-dependencies - GitHub
- Swift Package Manager - GitHub
- CocoaPods Deprecation Notice
- Mint - GitHub
- Semgrep Swift GA
- SonarQube Swift
- Swift AST Explorer
- xctrace man page
- OSSignposter - Apple
- MetricKit - Apple
- DocC - swift.org
- swift-docc-plugin - GitHub
- jazzy - GitHub
- Snyk Swift Docs
- Semgrep Supply Chain Swift
- OWASP Dependency-Check Swift
- Socket.dev
- Tailor - GitHub