Eclipse Devassist | Feature eclipse devassist (AST-163473) - #276
Merged
Conversation
…oblem Winodw (#263) * module setup * Gutter icons * lib * Save * feat: settings integration - remove circular dependencies - Remove McpInstallService from PreferencesPage (common-lib) - Create AuthenticationListener in devassist-lib configuration - Register listener in McpInstallService static block - Create IProjectLifecycleListener interface in common-lib - ProjectLifecycleListener implements interface - Update PluginStartup.getProjectListener() to return interface - MCP auto-install now triggered by authentication event (devassist-lib) - Workspace scan triggered after login via interface Architecture: common-lib has no devassist imports, clean separation. * refactor: extract authentication success handler to interface - Create IAuthenticationSuccessHandler interface in common-lib - Move welcome dialog logic to AuthenticationSuccessHandler in devassist-lib - PreferencesPage delegates to handler via Preferences registry - Removes WelcomeDialog import from common-lib PreferencesPage - Handlers registered in McpInstallService static block Architecture: common-lib has NO devassist imports, clean separation. * refactor: extract settings change notifier to interface - Create ISettingsChangeNotifier interface in common-lib - Create SettingsChangeNotifier implementation in main plugin - Register notifier in PluginStartup static block - Remove PluginStartup and PluginUtils imports from common-lib PreferencesPage - Use notifier instead of direct event broker calls Architecture: common-lib has NO main plugin imports, clean separation. * fix: remove duplicate JARs from devassist-lib devassist-lib should depend on common-lib for JAR access, not duplicate them. - Remove lib/ references from devassist-lib MANIFEST.MF and build.properties - Remove lib/ references from devassist-lib .classpath - devassist-lib Require-Bundle: common-lib provides JAR access - Revert .gitignore to only track main plugin lib/ * scanner state * Preferences state * constant of promotional panel * Missing Credentials panel when logout * copilot integration * Preferences package changes * Pref issues * Save code of enable disable scanners * Preferences cache clear * MCP Install * Text changes and info-unkown underline removal. * Resloving Review Comments * Resolving review comments * Add common lib jars
* module setup * Gutter icons * lib * Save * feat: settings integration - remove circular dependencies - Remove McpInstallService from PreferencesPage (common-lib) - Create AuthenticationListener in devassist-lib configuration - Register listener in McpInstallService static block - Create IProjectLifecycleListener interface in common-lib - ProjectLifecycleListener implements interface - Update PluginStartup.getProjectListener() to return interface - MCP auto-install now triggered by authentication event (devassist-lib) - Workspace scan triggered after login via interface Architecture: common-lib has no devassist imports, clean separation. * refactor: extract authentication success handler to interface - Create IAuthenticationSuccessHandler interface in common-lib - Move welcome dialog logic to AuthenticationSuccessHandler in devassist-lib - PreferencesPage delegates to handler via Preferences registry - Removes WelcomeDialog import from common-lib PreferencesPage - Handlers registered in McpInstallService static block Architecture: common-lib has NO devassist imports, clean separation. * refactor: extract settings change notifier to interface - Create ISettingsChangeNotifier interface in common-lib - Create SettingsChangeNotifier implementation in main plugin - Register notifier in PluginStartup static block - Remove PluginStartup and PluginUtils imports from common-lib PreferencesPage - Use notifier instead of direct event broker calls Architecture: common-lib has NO main plugin imports, clean separation. * fix: remove duplicate JARs from devassist-lib devassist-lib should depend on common-lib for JAR access, not duplicate them. - Remove lib/ references from devassist-lib MANIFEST.MF and build.properties - Remove lib/ references from devassist-lib .classpath - devassist-lib Require-Bundle: common-lib provides JAR access - Revert .gitignore to only track main plugin lib/ * scanner state * Preferences state * constant of promotional panel * Missing Credentials panel when logout * copilot integration * Preferences package changes * Pref issues * Save code of enable disable scanners * Preferences cache clear * Fix hover feature performance and rendering issues Major improvements to HTML rich hover display: 1. Fixed O(n²) duplicate detection using HashSet instead of ArrayList 2. Added performance monitoring to detect slow hover operations (>100ms) 3. Improved error handling with proper exception catching during annotation iteration 4. Centralized HTML escaping to HtmlEscapeUtil utility class 5. Enhanced HTML styling with severity-based colors, proper spacing, and fonts 6. Added visual improvements: separator styling, font sizes, color hierarchy 7. Optimized annotation model access with better error recovery Performance fixes: - Replaced O(n) contains() checks with O(1) HashSet lookups - Added timeout monitoring (logs if hover takes >100ms) - Proper exception handling without blocking UI thread HTML/UX improvements: - Severity colors: Malicious (red), Critical (dark red), High (orange), Medium (yellow), Low (green) - Better visual hierarchy with font sizes and weights - Improved spacing and divider styling - Action links now styled with blue color and cursor pointer indicator - Font family and size defaults for consistent rendering Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * save code * Add action link text to FindingsAnnotation hovers Hover now shows: - Title (orange/red) - Description - Informational action links (Fix, View Details, Ignore, Copy Details) - Helper text: "Press Ctrl+1 for Quick Fix actions" The action links are text-only (Eclipse hovers can't capture clicks). Actual implementations are in Quick Fix system via CheckmarxMarkerResolutionGenerator. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * Add clickable action buttons to hover (JetBrains-style) Hover now displays: - Title (orange) + Description - Four styled action buttons: Fix with AI, Details, Ignore, Copy - Buttons are clickable and trigger corresponding actions - Uses HTML button elements with action: protocol URL handlers - LocationListener intercepts clicks via reflection on internal Browser Next: Hook action handlers to actual Quick Fix implementations. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * Change action buttons to simple clickable links - Removed button styling (background, borders, padding) - Now displays as simple text links: blue + underlined - Links are clickable via LocationListener on action: protocol URLs - Simpler, cleaner appearance matching typical hover link styles Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * Add action handler to PresenterControlCreator hover The HoverControlCreator (small preview) had the action handler set up, but the PresenterControlCreator (large interactive popup) did not. When the user moved the mouse into the hover popup, JFace replaced it with the PresenterControlCreator, which had no LocationListener to intercept action: protocol URLs. Now both control creators set up the handler, so clicks work on both the preview and the interactive popup. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * Use JavaScript onclick to trigger action handlers Changed action links from href-based to onclick-based with window.location assignment. This ensures LocationListener receives location change events for action: protocol URLs. Added debug logging to verify LocationListener setup and invocation. Fixes: Links now trigger handleHoverAction() when clicked on both preview and interactive popups. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * Parse action from URL fragment instead of custom protocol Changed from custom protocol (action:) to URL fragment (#action:). SWT Browser navigates to about:blank#action:fix on link click, and LocationListener can now parse the fragment to extract the action name. Fixes: Clicks on action links now trigger handleHoverAction() correctly. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> * Buttons on hover * MCP Install * Save hover code * Hover code * Changes * Text changes and info-unkown underline removal. * Hover solution * Save hover code * Save hover code * Save hover code * Hover theme based colour * Hover font * Suffix * Link Hanlder * Removed unecessary method. * Issues resolved * Add common lib jars * Save code changes for hover * Bug fixes * Theme based icons * Hover changes for dynamic sizing * On Logout results removed * Line number update code * Malicious count * AST-168518 Additional SCA Package Manager and Publish Plugin Version (#269) - Added addition SCA package manager support - Publish plugin version and refactor existing wrapper call code - Centralize CxWrapper construction with agent version reporting and architectural cleanup - Added agent name + plugin version stamping in CxWrapperFactory to report "Eclipse_<version>" in all API calls - Moved CxWrapperFactory from devassist-lib/factory to common-lib/wrapper (shared location) - Added comprehensive unit tests (CxWrapperFactoryTest, WrapperProviderTest) - Enhance Checkmarx One preferences page UI and add logout confirmation - Persist the connected state and success message across page reopens, lock/unlock the API key field and Connect/Logout buttons based on connection state, add a logout confirmation dialog, and focus the API key field on open. * Decouple auth-state checks from API key presence; keep key after logout * Add Checkmarx MCP configuration UI with install/edit links and status display * Implement MCP uninstall with handler and callback pattern - New IMcpUninstallHandler interface for logout page to trigger uninstall - New IMcpUninstallCallback with onSuccess() / onNotFound() / onFailure() - Enables bidirectional MCP lifecycle (install on login, uninstall on logout) with symmetric callback-based result reporting for both operations * review comments resolved * Review comment --------- Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com> Co-authored-by: Anand Nandeshwar <73646287+cx-anand-nandeshwar@users.noreply.github.com>
* Test failing * Login trigger a new scan issue resolved * Hover issue resolved.
…273) *mac | Link buttons in hover are not working * Welcome Page | First-Login Auto-Enable with Preferences Tracking
* Duplicate button click for fix * Order multiple vulnerabilities * Container title colour
…eckmarx/ast-eclipse-plugin into feature/devassist_integration
cx-aniket-shinde
requested review from
cx-anand-nandeshwar and
cx-rakesh-kadu
September 2, 2026 11:42
cx-rakesh-kadu
approved these changes
Sep 2, 2026
cx-anand-nandeshwar
approved these changes
Sep 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New feature - Checkmarx One Developer Assist.