tristanhimmelman/ObjectMapper
59.1
Adequate · 27 September 2026
3.4k
lines of production code
Swift
primary language
4
measurements over time
What this system is
Features
Added ObjectMapper workspace configuration
A new workspace file (contents.xcworkspacedata) was added to the project, configuring the workspace to reference the ObjectMapper Xcode project. This allows developers to open and build the project as a workspace, which is typically required for managing multiple targets or dependencies in Xcode.
ObjectMapper.xcworkspace · high confidence
Added Xcode scheme configurations for macOS, iOS, tvOS, and watchOS
The project now includes dedicated build and test schemes for Apple's four major platforms. Developers can now build, run, test, and archive the ObjectMapper framework specifically for macOS, iOS, tvOS, and watchOS directly from Xcode, ensuring each platform's build and test targets are correctly configured for those environments.
ObjectMapper.xcodeproj/xcshareddata · high confidence
Adds new data and type mapping transforms
Introduces several new transform classes to the library: CodableTransform for mapping Codable types, DataTransform for Base64-encoded strings, DateTransform for Unix timestamps, DictionaryTransform for dictionaries with RawRepresentable keys, EnumTransform for RawRepresentable types, and HexColorTransform for color objects. Additionally, the Map class gains a shouldIncludeNilValues property to control whether null values are included in JSON output, and the library adds support for mapping signed and unsigned integer types.
Sources · high confidence
ObjectMapper now supports Swift Package Manager, Carthage, and CocoaPods
The project now includes official support for multiple package managers. Swift Package Manager is supported via new \[e-mail redacted]\ and \[e-mail redacted]\ manifest files. Additionally, the \README.md\ has been updated with badges and documentation for CocoaPods and Carthage integration, making it easier for users to install the library using their preferred dependency manager.
(repo-wide) · high confidence
Behavioural changes
Added Apple privacy manifest for App Store compliance
A new PrivacyInfo.xcprivacy file has been added to the project resources. This privacy manifest declares that the app does not track users, collect data, or access restricted APIs, ensuring compliance with Apple's upcoming App Store requirements regarding privacy transparency.
Sources/Resources · high confidence
Added Xcode workspace configuration and source control blueprints
New workspace configuration files have been added to the project, including IDE workspace checks and source control blueprints for the ObjectMapper and Nimble repositories. These changes update how the Xcode workspace manages its state and version control integration.
ObjectMapper.xcworkspace/xcshareddata · high confidence
Initialized Xcode workspace configuration
The Xcode workspace has been initialized with a new contents.xcworkspacedata file that references the main ObjectMapper project, and an IDEWorkspaceChecks.plist file has been added to suppress the 32-bit warning.
ObjectMapper.xcodeproj/project.xcworkspace · medium confidence
Updated project configuration for Swift 5 and modern Xcode standards
The Xcode project file (project.pbxproj) has been updated to target Swift 5.0, reflecting the latest language version requirements. The configuration also includes updates to support Swift Package Manager (SPM) and enables the APPLICATION\_EXTENSION\_API\_ONLY setting for OS X targets, ensuring compatibility with modern Apple platform requirements and app extension constraints.
ObjectMapper.xcodeproj · high confidence
Test coverage
Added comprehensive test coverage for basic types, transforms, and mapping contexts; Added test bundle Info.plist for SPM support.
Dependencies
ObjectMapper 4.4.2: Swift 5.0, iOS 13+, and Privacy Manifest
The ObjectMapper library has been updated to version 4.4.2, introducing support for Swift 5.0 and requiring iOS 13.0, macOS 12.0, tvOS 9.0, and watchOS 2.0. The package now includes a privacy manifest resource bundle for compliance with upcoming Apple requirements, and the CocoaPods specification now requires CocoaPods version 1.12.0 or higher.
(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
Score
- CAI 50 → 59 (+9.3)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 96 (-3.6)
- Architecture 100 (new)
- Maturity 53 → 49 (-3.8)
- Readiness 28 → 46 (+17.8)
- Security 90 → 90 (+0.0)
Resolved (7)
- Dimension evaluation failed
- No automated tests
- No exposed public API
- No tests found
- Secret: generic-api-key (ObjectMapper.xcworkspace/xcshareddata/ObjectMapper.xcscmblueprint)
- Secret: generic-api-key (ObjectMapper.xcworkspace/xcshareddata/ObjectMapper.xcscmblueprint)
- Test reliability not included
New (25)
- Coverage not measured — Swift suite
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (9 lines × 2) (Sources/HexColorTransform.swift)
- Further orphaned files (smaller)
- Inconsistent parameter naming for array mapping. The labels 'JSONString', 'JSONObject', and 'JSONArray' are used. While descriptive, they are verbose and inconsistent with the pattern of 'JSON' used in single-object mapping. Furthermore, 'JSONObject' is used for an Any? which might not be an object, and 'JSONArray' is used for an array of dictionaries.
- Inconsistent parameter naming for dictionary mapping. The labels 'JSONString', 'JSONObject', and 'JSON' vary by input type, mirroring the inconsistency in single-object and array mapping.
- Inconsistent parameter naming for serialization methods. The single object method takes a parameter with no explicit label (defaulting to the type name or implicit), while array and dictionary methods take labeled parameters. More importantly, the method names themselves are distinct ('toJSON', 'toJSONArray', 'toJSONDictionary') rather than overloaded 'toJSON' methods with different parameter types, which would be more consistent with the 'map' family.
- Inconsistent parameter naming for set mapping. The labels 'JSONString', 'JSONObject', and 'JSONArray' vary by input type.
- Inconsistent parameter naming for the same logical operation (mapping a JSON source to an object). The methods differ only by the type of the first argument (Any?, String, [String: Any]), but the parameter labels are 'JSONObject', 'JSONString', and 'JSON' respectively. This forces the caller to remember specific labels for specific types rather than using a consistent label like 'source' or 'json'.
- Mapper.map (cognitive 17) (Sources/Mapper.swift)
- No assertions: testPerformance (Tests/ObjectMapperTests/PerformanceTests.swift)
- No assertions: testPerformanceCluster (Tests/ObjectMapperTests/PerformanceTests.swift)
- No assertions: testPerformanceImmutable (Tests/ObjectMapperTests/PerformanceTests.swift)
- No dependency advisory monitoring
- Orphaned knowledge (Sources/TransformOperators.swift)
- Same inconsistency as above but for the nullable return variants. The parameter labels 'JSONObject', 'JSONString', and 'JSON' vary by input type, creating a fragmented API surface for the same intent.
- Secret: generic-api-key (ObjectMapper.xcworkspace/xcshareddata/ObjectMapper.xcscmblueprint)
- Secret: generic-api-key (ObjectMapper.xcworkspace/xcshareddata/ObjectMapper.xcscmblueprint)
- …and 5 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
tristanhimmelman/ObjectMapper 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 6021c6035e83a306047348666f6400dc61445d3b — 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.