CocoaPods Parser Improvements
May 28, 2026 · View on GitHub
Summary
Rust now intentionally differs from or improves on current Python ScanCode CocoaPods handling in two concrete ways:
- refines dependency scope handling so runtime/development semantics are more honest across
.podspec,.podspec.json,Podfile, andPodfile.lock - avoids duplicate package explosion for
RxDataSources.podspec
Python Status
- Current Python CocoaPods handling is split across
.podspec,.podspec.json,Podfile, andPodfile.lockhandlers. - Upstream still has unresolved scope-semantics questions and a history of duplicate-output bugs around
RxDataSources.podspec.
Rust Improvements
Refined scope handling
.podspecparsing now distinguishes:add_dependency/add_runtime_dependency→scope = runtime,is_runtime = true,is_optional = falseadd_development_dependency→scope = development,is_runtime = false,is_optional = true
.podspec.jsondependencies now use the same runtime-oriented scope instead of the vaguedependencieslabel.Podfiledependencies now use the more honestscope = dependencieswith runtime/optional left unknown instead of forcing them to look like unconditional runtime dependencies.Podfile.lockdependencies now also usescope = dependenciesand leave runtime/optional unset, because the lockfile does not encode enough information to prove those booleans safely.
Duplicate-output protection
- Rust emits exactly one package with a bounded, non-duplicated dependency set for
RxDataSources.podspec. - This avoids the historical output blow-up seen around duplicate CocoaPods package expansion.
Coverage
Coverage spans the refined scope semantics across CocoaPods manifests and lockfiles, including protection against historical duplicate-output regressions.