kishikawakatsumi/KeychainAccess
62.4
Adequate · 27 September 2026
6.1k
lines of production code
Swift
primary language
4
measurements over time
What this system is
Features
Add Swift Package Manager support and modernize project structure
The project now supports Swift Package Manager (SPM) via a new [e-mail redacted] manifest, enabling direct integration for Swift 5.3+ users. The legacy .travis.yml CI configuration has been removed, and the .gitignore file has been updated with comprehensive rules for modern build artifacts, Xcode projects, and dependency managers. Documentation in README.md has been refreshed to reflect current Swift error handling patterns and updated integration badges.
(repo-wide) · high confidence
Added Mac Catalyst test host and test bundle
Added a new Mac Catalyst test host application (TestHost-MacCatalyst) and its corresponding unit test bundle (KeychainAccessTests-MacCatalyst). This includes the necessary Xcode project configuration, application entry points (AppDelegate, SceneDelegate), UI resources (storyboards, assets), and test source files to enable running the existing test suite on Mac Catalyst devices.
Lib/TestHost-MacCatalyst · high confidence
Added TestHost application bundle for unit testing
A new TestHost application target has been introduced to serve as the host application for running unit tests. This includes an AppDelegate implementation that supports both macOS and iOS (with Swift 4.2+ compatibility), a standard Info.plist configuration for iOS device capabilities and interface orientations, and an entitlements file granting keychain access for the test host. This change enables the test suite to execute within a proper application context rather than a bare executable.
Lib/TestHost · high confidence
Removals
iOS playground example removed
The iOS playground example, including its configuration, source code, and timeline files, has been removed from the repository.
Examples/Playground-iOS.playground · high confidence
Behavioural changes
Added Xcode workspace configuration for Swift Package Manager
A new Xcode workspace file (contents.xcworkspacedata) was added to the .swiftpm directory, establishing the workspace structure for the Swift Package Manager project.
.swiftpm · high confidence
Extracted build configuration into .xcconfig files
Build settings for the library, test host, and test targets have been extracted into dedicated .xcconfig files (Base, Debug, Release, TestHost, and Tests). This change standardizes compiler warnings, sets Swift 5.0 as the default version, configures Mac Catalyst support, and ensures proper test host linking and code signing settings for each build configuration.
Lib/Configurations · high confidence
Keychain module now uses a Swift Package Manager-compatible structure
The Keychain module has been restructured to support Swift Package Manager by converting the source file into a symbolic link pointing to the actual implementation in Lib/KeychainAccess/Keychain.swift. This change aligns the project's file layout with Swift Package Manager conventions, ensuring the module is correctly recognized and built within that ecosystem.
Sources · medium confidence
KeychainAccess updated to version 4.2.2
The KeychainAccess library has been updated to version 4.2.2. This update includes the addition of an MIT license header to the source files and a change to the bundle identifier configuration in the Info.plist, which now uses the $(PRODUCT\_BUNDLE\_IDENTIFIER) build setting instead of a hardcoded string.
Lib/KeychainAccess · high confidence
Update example app for Swift 4.2 and modernize iOS APIs
The Example-iOS app has been updated to support Swift 4.2, introducing conditional compilation blocks to maintain compatibility with older Swift versions. The update includes migrating to modern UIKit APIs, such as using \dismiss(animated:completion:)\ instead of the deprecated \dismissViewControllerAnimated:\, and updating table view delegate methods to use the current signatures (e.g., \cellForRowAt\). Additionally, the \Info.plist\ has been updated to use the \PRODUCT\_BUNDLE\_IDENTIFIER\ build variable, and a new \Example-iOS.entitlements\ file has been added to configure keychain access groups for the example project.
Examples/Example-iOS/Example-iOS · medium confidence
Updated Xcode project scheme configuration
The Example-iOS Xcode project scheme has been updated to Xcode 12.0 (LastUpgradeVersion 1200) and scheme version 1.3. The TestAction configuration was restructured to explicitly specify the 'Example-iOS.app' as the macro expansion target, and the LaunchAction was updated to use the 'internal' debug service extension.
Examples/Example-iOS/Example-iOS.xcodeproj/xcshareddata · medium confidence
Updated Xcode project scheme configurations for modern toolchains
The Xcode project scheme files have been updated to support Xcode 12 and Swift 5, including renaming the iOS scheme to remove the platform suffix and updating the last upgrade version to 1200. The test host scheme was renamed to TestHost and reconfigured to build and run the TestHost application rather than the framework, with test targets adjusted accordingly.
Lib/KeychainAccess.xcodeproj/xcshareddata · high confidence
Updated iOS example app to Xcode 8 and modernized storyboards
The iOS example app's launch screen and main storyboard have been updated to the Xcode 8 format, upgrading the Interface Builder plugin and tooling versions. The main storyboard now targets iOS 8.0+ and uses sRGB color spaces for better consistency. Additionally, the navigation controllers are configured to use full-screen presentation styles, and the example app module name has been updated to 'Example\_iOS' to match the project structure.
Examples/Example-iOS/Example-iOS/Base.lproj · high confidence
Updated iOS example project with modern Xcode and Swift settings
The Example-iOS project has been updated to use modern Xcode and Swift build settings. This includes enabling numerous Clang static analyzer warnings (such as block capture autoreleasing, comma, and infinite recursion), setting the iOS deployment target to 9.0, enabling testability, and configuring code signing entitlements. The project also references a new 'TestHost' application target and updates the Swift version to 4.1.
Examples/Example-iOS/Example-iOS.xcodeproj · medium confidence
Updated workspace configuration for Mac Catalyst support
The KeychainAccess workspace has been updated to include the Mac Catalyst test host project (TestHost-MacCatalyst.xcodeproj) and remove the iOS playground. Additionally, a new IDE workspace check file was added to track the 32-bit warning status.
KeychainAccess.xcworkspace · medium confidence
Test coverage
Expanded test coverage for KeychainAccess; Project structure reorganized with new test and configuration files.
Dependencies
Swift Package Manager support and platform updates
The project now includes a Package.swift file, enabling Swift Package Manager integration for the library. The CocoaPods specification (KeychainAccess.podspec) has been updated to version 4.2.2, with the Swift version requirement set to 5.1. Additionally, the podspec now explicitly declares support for watchOS (deployment target 3.0) and tvOS (deployment target 9.0), and the summary text has been updated to reflect macOS support instead of OS X.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 50 → 62 (+12.4)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 93 (-6.8)
- Architecture 95 (new)
- Maturity 55 → 49 (-6.6)
- Readiness 30 → 55 (+25.3)
- Security 80 → 95 (+15.3)
Resolved (10)
- Dimension evaluation failed
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No automated tests
- No exposed public API
- No tests found
- Test reliability not included
- The Features bulletpoint list (TouchID integration, shared web credentials, cross-platform) appears in order but does not mention macOS/iOS support for iCloud sharing. (README.md)
- The Usage section begins with :eyes: See Also to the iOS example project but then clips mid-sentence before the outline-level subsections (Saving Internet Password, Instantiation, Adding an item) appear. (README.md)
New (61)
- ClassTooLong: Keychain (Lib/KeychainAccess/Keychain.swift)
- ClassTooLong: Keychain (Sources/Keychain.swift)
- ClassTooLong: Status (Lib/KeychainAccess/Keychain.swift)
- ClassTooLong: Status (Sources/Keychain.swift)
- Coverage not measured — Swift suite
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Duplicate intent: get and getString perform the exact same operation (retrieving a String value from the keychain). Having two methods with different names for the same functionality violates the principle of least surprise and creates confusion for API users.
- Duplicated block (10 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (10 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (11 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (12 lines × 4) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (13 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (17 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (18 lines × 2) (Examples/Example-iOS/Example-iOS/AccountsViewController.swift)
- Duplicated block (23 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (24 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (25 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (27 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (30 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- Duplicated block (49 lines × 2) (Lib/KeychainAccess/Keychain.swift)
- …and 41 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
kishikawakatsumi/KeychainAccess was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 27 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit e0c7eebc5a4465a3c4680764f26b7a61f567cdaf — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d00c643c3f66.