Skip to content

Eclipse Devassist | Feature eclipse devassist (AST-163473) - #276

Merged
cx-aniket-shinde merged 10 commits into
mainfrom
feature/devassist_integration
Sep 2, 2026
Merged

Eclipse Devassist | Feature eclipse devassist (AST-163473)#276
cx-aniket-shinde merged 10 commits into
mainfrom
feature/devassist_integration

Conversation

@cx-aniket-shinde

@cx-aniket-shinde cx-aniket-shinde commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

New feature - Checkmarx One Developer Assist.

  1. Realtime scanning - SCA, SAST, IAC, SECRET, CONTAINER.
  2. Remediation using checkmarx mcp with copilot.
  3. Ignore and Revive functionality.
  4. Enhanced login page.

cx-aniket-shinde and others added 8 commits August 18, 2026 22:09
…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
@cx-aniket-shinde
cx-aniket-shinde requested a review from a team September 2, 2026 11:41
@cx-aniket-shinde cx-aniket-shinde changed the title Eclipse Devasssit Eclipse Devassist Sep 2, 2026
@cx-aniket-shinde cx-aniket-shinde changed the title Eclipse Devassist Eclipse Devassist | Feature eclipse devassist (AST-163473) Sep 2, 2026
@cx-aniket-shinde
cx-aniket-shinde merged commit f8e8d73 into main Sep 2, 2026
6 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants