fix(analyzer): move Swift detection before Ruby detection (#401)

iOS projects often have a Gemfile for CocoaPods/Fastlane dependencies.
The previous detection order checked Ruby first, causing iOS projects
to be incorrectly identified as Ruby instead of Swift.

This fix moves Swift/iOS detection before Ruby detection in the
elif chain to ensure .xcodeproj and Package.swift are checked first.

Fixes: iOS projects with Gemfile detected as Ruby

Signed-off-by: Black Circle Sentinel <mludlow000@icloud.com>
This commit is contained in:
Michael Ludlow
2025-12-29 01:17:49 -05:00
committed by GitHub
parent 98b12ed807
commit 321c971289
@@ -75,14 +75,7 @@ class FrameworkAnalyzer(BaseAnalyzer):
content = self._read_file("Cargo.toml")
self._detect_rust_framework(content)
# Ruby detection
elif self._exists("Gemfile"):
self.analysis["language"] = "Ruby"
self.analysis["package_manager"] = "bundler"
content = self._read_file("Gemfile")
self._detect_ruby_framework(content)
# Swift/iOS detection
# Swift/iOS detection (check BEFORE Ruby - iOS projects often have Gemfile for CocoaPods/Fastlane)
elif self._exists("Package.swift") or any(self.path.glob("*.xcodeproj")):
self.analysis["language"] = "Swift"
if self._exists("Package.swift"):
@@ -91,6 +84,13 @@ class FrameworkAnalyzer(BaseAnalyzer):
self.analysis["package_manager"] = "Xcode"
self._detect_swift_framework()
# Ruby detection
elif self._exists("Gemfile"):
self.analysis["language"] = "Ruby"
self.analysis["package_manager"] = "bundler"
content = self._read_file("Gemfile")
self._detect_ruby_framework(content)
def _detect_python_framework(self, content: str) -> None:
"""Detect Python framework."""
from .port_detector import PortDetector