Conversation
a6bfbc8 to
82d4875
Compare
61cacd1 to
0815067
Compare
0815067 to
efa46fe
Compare
82d4875 to
1669722
Compare
1669722 to
67771da
Compare
67771da to
0ccfbe1
Compare
0ccfbe1 to
da01416
Compare
9c67c75 to
5f350ee
Compare
5f350ee to
88af1ae
Compare
88af1ae to
99bb0f7
Compare
782090f to
40dfe37
Compare
Backend Test FailuresFailures on
|
Backend Test FailuresFailures on
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Backend Test FailuresFailures on
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Backend Test FailuresFailures on
|
Backend Test FailuresFailures on
|
Backend Test FailuresFailures on
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| "php": "composer.json", | ||
| "dart": "pubspec.yaml", | ||
| "ruby": "Gemfile", | ||
| "go": "go.mod", |
There was a problem hiding this comment.
Go manifest parsing infrastructure is unused dead code
Low Severity
_PACKAGE_MANIFEST_FILES["go"] = "go.mod" causes go.mod to be parsed via _parse_go_mod during detection, and Go module version matching was added to _package_in_manifest. However, every Go framework definition uses match_content regex rules on go.mod — none uses match_package. The parsed Go manifest and version-path matching logic are never exercised in production, making this dead infrastructure.
Additional Locations (2)
…language result" This reverts commit 1d0182a.
Expand the composable framework detection system to cover 97/100 (97%) of selectable platforms in the picker. Infrastructure additions: - match_ext + match_content combo rules for .csproj inspection - _NON_SELECTABLE_PLATFORMS filter for internally-used platforms - Dual base_platform entries for Android (java + kotlin) - Cross-base-platform dedup keeps higher byte count 61 new framework definitions across JavaScript, Python, Go, Java, Ruby, PHP, Dart, Swift, Native, .NET, Mobile/Gaming, and other runtimes.
Replace the custom line-based pubspec.yaml parser with yaml.safe_load() via sentry.utils.yaml, which is already used elsewhere in the codebase. More robust against comments, flow mappings, and non-standard indentation.
Map GDScript directly to godot in the language map. GDScript is exclusively used for Godot, so any repo with GDScript as its primary language is a Godot project regardless of whether project.godot is present at root.
Perl was removed from GITHUB_LANGUAGE_TO_SENTRY_PLATFORM, so it can never appear as a detected platform. The _NON_SELECTABLE_PLATFORMS entry was dead code.
When the same platform is detected via different base_platform entries, also update confidence and priority so the values stay consistent if entries ever diverge in sort order.
The engines.node field is too ubiquitous in the JS ecosystem to be a reliable Node.js signal — even browser-only libraries set it for CI compatibility. This caused pure JS tools like prettier to be detected as Node instead of JavaScript. Node detection now relies on stronger signals: .nvmrc, .node-version, nodemon.json, and Procfile with "node".
…match When the same platform ID is detected via different base_platforms (e.g. apple-ios from both Objective-C and Swift), always upgrade confidence and priority when a framework rule matches, even if the new base_platform has fewer bytes. Previously, confidence stayed at "medium" if the language-only entry had more bytes.
Only one platform suggestion is shown to the user, so processing all languages wastes API calls. Now detect_platforms finds the top language by bytes and only evaluates frameworks for its base platform.
…tection The else branch that merged duplicate platform IDs across different base platforms became unreachable after limiting detection to a single top-language platform. With only one base_platform in active_platforms, and no duplicate platform IDs within a single base_platform, the dedup path can never execute. Co-Authored-By: Claude <noreply@anthropic.com>
Both Laravel and WordPress bundle Symfony components, so detecting symfony/ in composer.json would incorrectly suggest Symfony onboarding. For WordPress this is critical since it gets removed by _NON_SELECTABLE_PLATFORMS, leaving only the wrong Symfony result. Co-Authored-By: Claude <noreply@anthropic.com>
…apping GDScript maps to base platform "godot" but the framework definition used "native", so the project.godot file check was unreachable for GDScript-dominant repos, always falling back to medium confidence. Co-Authored-By: Claude <noreply@anthropic.com>
…t space Replace broad `except Exception` in manifest parsing with specific exceptions (JSONDecodeError, YAMLError, ValueError, KeyError, TypeError, AttributeError) per repo guidelines. Also handle `require(` without space in go.mod for hand-edited files. Co-Authored-By: Claude <noreply@anthropic.com>
A C++ repo without GDScript is not a Godot project. Now that Godot has base_platform "godot" aligned with GDScript, the test should use GDScript as the top language to correctly represent a Godot repo. Co-Authored-By: Claude <noreply@anthropic.com>
Non-selectable platforms like php-wordpress were superseding selectable ones like php-symfony, then getting filtered out themselves, dropping valid detections. Only selectable platforms should participate in supersession. Co-Authored-By: Claude <noreply@anthropic.com>
The test mock's root listing was missing composer.json, so Symfony was never detected and the supersession scenario was not exercised. Co-Authored-By: Claude <noreply@anthropic.com>
- Remove local.settings.json from Azure Functions detection rule since it is commonly gitignored, causing false negatives - Remove dead match_ext rule for .xcodeproj (it's a directory, not a file, so only match_dir applies) - Restore platform dedup guard in framework matching loop to prevent duplicates when multi-language support is re-enabled - Clean up module-scope _fw variable leak after index-building loops - Handle single-line go.mod require blocks like require (pkg v1.0) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
No Go framework definitions use match_package rules -- they all use match_content with regex patterns on go.mod directly. Remove the orphaned _parse_go_mod function, go.mod manifest entry, and Go module version path matching in _package_in_manifest. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>


Expand the composable framework detection system to cover 97/100 (97%) of selectable platforms in the picker, up from the ~36 platforms in PR 2.
Infrastructure additions:
match_ext+match_contentcombo rules -- find files by extension, then search content (needed for .csproj inspection where filenames vary)_NON_SELECTABLE_PLATFORMSfilter -- platforms detected internally for ranking (e.g. preventing WordPress from being misidentified as Symfony) but not shown to users because they lack onboarding docs or map to other platforms (perl, php-wordpress, swift)base_platformentries for Android (java + kotlin) so Kotlin-first projects are correctly detected61 new framework definitions:
Only 3 platforms remain undetectable:
go-http(stdlib net/http, no manifest signal),minidump(crash dump format, not a project type), andpython-serverless(too generic, overlaps with awslambda/gcpfunctions).Note on
go-http: Plain Go repos now intentionally returngoas the base platform instead ofgo-http. There is no reliable way to distinguish a net/http project from any other Go project without a framework dependency, so the genericgoplatform is the correct fallback.Stack: