Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Autofix Details
Bugbot Autofix prepared fixes for both issues found in the latest run.
- ✅ Fixed: Unused constant
DEFAULT_INSTALL_PROFILER_STRINGnever referenced- I added an
installProfiler@Parameter(defaultValue = DEFAULT_INSTALL_PROFILER_STRING)toExtensionConfigurationHolderMojo, which makes the constant used and exposes the configuration consistently.
- I added an
- ✅ Fixed: Default constant declared after instance field that uses it
- I moved
DEFAULT_INSTALL_PROFILERandDEFAULT_INSTALL_PROFILER_STRINGinto the top default-constants block before instance fields to match class ordering conventions.
- I moved
Or push these changes by commenting:
@cursor push 7458bc9470
Preview (7458bc9470)
diff --git a/src/main/java/io/sentry/ExtensionConfigurationHolderMojo.java b/src/main/java/io/sentry/ExtensionConfigurationHolderMojo.java
--- a/src/main/java/io/sentry/ExtensionConfigurationHolderMojo.java
+++ b/src/main/java/io/sentry/ExtensionConfigurationHolderMojo.java
@@ -1,5 +1,6 @@
package io.sentry;
+import static io.sentry.config.PluginConfig.DEFAULT_INSTALL_PROFILER_STRING;
import static io.sentry.config.PluginConfig.DEFAULT_SKIP_AUTO_INSTALL_STRING;
import static io.sentry.config.PluginConfig.DEFAULT_SKIP_TELEMETRY_STRING;
@@ -21,6 +22,10 @@
@Parameter(defaultValue = DEFAULT_SKIP_TELEMETRY_STRING)
private boolean skipTelemetry;
+ @SuppressWarnings("UnusedVariable")
+ @Parameter(defaultValue = DEFAULT_INSTALL_PROFILER_STRING)
+ private boolean installProfiler;
+
@Override
public void execute() throws MojoExecutionException, MojoFailureException {}
}
diff --git a/src/main/java/io/sentry/config/PluginConfig.java b/src/main/java/io/sentry/config/PluginConfig.java
--- a/src/main/java/io/sentry/config/PluginConfig.java
+++ b/src/main/java/io/sentry/config/PluginConfig.java
@@ -23,6 +23,8 @@
public static final boolean DEFAULT_SKIP_VALIDATE_SDK_DEPENDENCY_VERSIONS = false;
public static final @NotNull String DEFAULT_SKIP_VALIDATE_SDK_DEPENDENCY_VERSIONS_STRING =
"false";
+ public static final boolean DEFAULT_INSTALL_PROFILER = false;
+ public static final @NotNull String DEFAULT_INSTALL_PROFILER_STRING = "false";
public static final @NotNull String DEFAULT_ADDITIONAL_SOURCE_DIRS_FOR_SOURCE_CONTEXT = "";
private boolean skip = DEFAULT_SKIP;
@@ -38,9 +40,6 @@
DEFAULT_ADDITIONAL_SOURCE_DIRS_FOR_SOURCE_CONTEXT;
private boolean installProfiler = DEFAULT_INSTALL_PROFILER;
- public static final boolean DEFAULT_INSTALL_PROFILER = false;
- public static final @NotNull String DEFAULT_INSTALL_PROFILER_STRING = "false";
-
private @Nullable String org;
private @Nullable String project;
private @Nullable String url;| private boolean installProfiler = DEFAULT_INSTALL_PROFILER; | ||
|
|
||
| public static final boolean DEFAULT_INSTALL_PROFILER = false; | ||
| public static final @NotNull String DEFAULT_INSTALL_PROFILER_STRING = "false"; |
There was a problem hiding this comment.
Unused constant DEFAULT_INSTALL_PROFILER_STRING never referenced
Low Severity
DEFAULT_INSTALL_PROFILER_STRING is declared but never used anywhere in the codebase. Other DEFAULT_*_STRING constants are used as @Parameter(defaultValue = ...) in Maven Mojo classes (e.g., ExtensionConfigurationHolderMojo, UploadSourceBundleMojo). If installProfiler needs a corresponding @Parameter declaration in a Mojo (like skipAutoInstall and skipTelemetry have in ExtensionConfigurationHolderMojo), then a Mojo declaration is missing. If not, this constant is dead code.
| private boolean installProfiler = DEFAULT_INSTALL_PROFILER; | ||
|
|
||
| public static final boolean DEFAULT_INSTALL_PROFILER = false; | ||
| public static final @NotNull String DEFAULT_INSTALL_PROFILER_STRING = "false"; |
There was a problem hiding this comment.
Default constant declared after instance field that uses it
Low Severity
DEFAULT_INSTALL_PROFILER and DEFAULT_INSTALL_PROFILER_STRING are declared on lines 41–42, after the instance field installProfiler that references the constant on line 39. Every other DEFAULT_* constant in this class is declared at the top (lines 7–26) before the instance fields. While Java inlines compile-time constants so this works at runtime, the inconsistent ordering breaks the established class structure pattern and could confuse future maintainers.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
There are 4 total unresolved issues (including 2 from previous reviews).
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| fixture.logger.capturedMessage == | ||
| "sentry-async-profiler won't be installed because the current version (8.22.0) is " + | ||
| "lower than the minimum supported sentry version 8.22.0" | ||
| } |
There was a problem hiding this comment.
Test asserts wrong minimum version in error message
Low Severity
The test asserts the error message ends with "minimum supported sentry version 8.22.0", but the actual minimum supported version defined in ProfilerInstallStrategy.minSupportedSentryVersion() is 8.23.0. This mismatch occurs because AbstractIntegrationInstaller line 95 logs sentryVersion (the current version) instead of minSupportedSentryVersion(), producing a confusing message like "8.22.0 is lower than 8.22.0". The test encodes this incorrect behavior as expected.
| @Override | ||
| protected boolean shouldInstallModule(final @NotNull AutoInstallState autoInstallState) { | ||
| return autoInstallState.isInstallProfiler(); | ||
| } |
There was a problem hiding this comment.
Misleading log message when profiler not opted into
Medium Severity
When installProfiler is false (the default), shouldInstallModule returns false, causing AbstractIntegrationInstaller to log "sentry-async-profiler won't be installed because it was already installed directly." This is misleading — the user never installed it; they simply didn't opt in. Unlike other integrations where shouldInstallModule returning false genuinely means the module is already present, the profiler conflates "not opted in" with "already installed," producing a confusing message on every default build.



📜 Description
Add a new flag
installProfilerto automatically install thesentry-async-profilerusing the maven plugin.💡 Motivation and Context
resolves: #221
💚 How did you test it?
📝 Checklist
🔮 Next steps