sentry-java
sentry-java copied to clipboard
Auto detect `inApp` for stack frames
Problem Statement
inApp for non Android has to be set via inAppIncludes. It would be nice if Sentry could auto detect inApp frames.
Solution Brainstorm
- Check if a package can be found on sources like https://central.sonatype.com/?smo=true
- might be rate limited
- not sure we can check package directly or need to try and walk up the package tree and try each package
- open source app could be on there but still be inApp
- Check what's calling Sentry.init - probably just shifting guesswork as we then don't know how far up the package tree we still consider inApp (e.g. com.some.myapp.x.y.MySpringApp might be in app but com.some.mylib could be a library by someone else
- If we have sources for a frame, assume it's inApp=true (wouldn't work in case we reworked source context to something that's loaded lazily when an issue is displayed and we then also lookup sources from https://central.sonatype.com/?smo=true etc.)
- During compile time detect package in build tool plugin somehow (Gradle and Maven)
- For integrations with auto init we may be able to find out some config param or similar that tells us something about the package
Important note is that even if someone sets inAppIncludes, it's not guaranteed to be marked as in-app due to potential obfuscation of the stackframes. Ideally we should move this to server-side, and mark frames as in-app after deobfucation
We already have https://github.com/getsentry/sentry-java/blob/7cdf1216cba07a8bc4adb24ca9356bb8231ee724/sentry-spring-boot/src/main/java/io/sentry/spring/boot/InAppIncludesResolver.java#L22 for Spring Boot (also Spring Boot 3).