sentry-java icon indicating copy to clipboard operation
sentry-java copied to clipboard

Auto detect `inApp` for stack frames

Open adinauer opened this issue 2 years ago • 4 comments

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

adinauer avatar May 15 '23 16:05 adinauer

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

romtsn avatar May 15 '23 16:05 romtsn

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).

adinauer avatar Feb 05 '24 13:02 adinauer