Swift Tooling Standards
Priority: P0
Define SPM Packages
- Package.swift: Define clear targets, products, and dependencies.
- Modularization: Break large projects into local packages for faster builds.
- Versioning: Use semantic versioning (Major.Minor.Patch) for shared packages.
See implementation examples for Package.swift structure, SwiftLint config, and environment-specific code.
Enforce Code Quality
- SwiftLint: Use for consistent style enforcement. Create a
.swiftlint.ymlin the project root withdisabled_rulesandopt_in_rulessections. - Compiler Warnings: Treat warnings as errors in CI to maintain code health.
- Documentation: Use triple slashes
///for documentation comments on public APIs (DocC-compatible).
Manage Build Configurations
- Xcconfig: Use external configuration files to manage build settings.
- Environment Flags: Use
#if DEBUGfor development-only code, closed with#endif. - Schemes: Maintain separate schemes for Development, Staging, and Production.
Anti-Patterns
- No API keys in code: Use environment variables or build configs.
- No // swiftlint:disable: Fix the underlying issue.
- No manually added frameworks: Use SPM.