Skip to content

Project Ignite Phase I - Forking Jetbrains Plugin (AST-131708)#409

Open
cx-atish-jadhav wants to merge 70 commits intomainfrom
feature/project_ignite_AST-131708
Open

Project Ignite Phase I - Forking Jetbrains Plugin (AST-131708)#409
cx-atish-jadhav wants to merge 70 commits intomainfrom
feature/project_ignite_AST-131708

Conversation

@cx-atish-jadhav
Copy link
Contributor

@cx-atish-jadhav cx-atish-jadhav commented Feb 17, 2026

By submitting a PR to this repository, you agree to the terms within the Checkmarx Code of Conduct. Please see the contributing guidelines for how to create and submit a high-quality PR for this repo.

Description

Forked the existing Checkmarx One JetBrains plugin to create a separate Checkmarx Developer Assist plugin for Project Ignite, enabling a focused developer experience without enterprise features.

What Changed

New Plugin Module Created

  • Module: plugin-checkmarx-devassist
  • Name: Checkmarx Developer Assist
  • New plugin ID: com.checkmarx.devassist-jetbrains-plugin
  • Separate marketplace identity with distinct branding

Removed Enterprise Features

  • ❌ Scan Results panel and tree view
  • ❌ Project/Branch management UI
  • ❌ Server URL configuration
  • ❌ All "Checkmarx One" text references
  • ❌ Enterprise-only commands and settings

Simplified Authentication

  • ✅ API key authentication only (no server URL)
  • ✅ Portal-managed social login support
  • ✅ Removed OAuth callback complexity

Focused Settings UI

  • CxDevAssistSettingsComponent - Main authentication settings
  • RealtimeScannersSettingsComponent - Scanner configuration panel
    • Individual toggles for ASCA, OSS, Secrets, Containers, IaC
    • MCP (Model Context Protocol) installation & status
    • Container tool selection (Docker/Podman)
    • User preferences persistence
  • IgniteWelcomeDialog - First-run onboarding experience

Code Refactoring

  • Moved shared code to common-lib (auth, settings, utils)
  • Extracted DevAssist logic to devassist-lib (MCP integration)
  • Preserved plugin-checkmarx-ast without regression
  • Added PluginContext for plugin-specific behavior

Impact

Plugin Users:

  • ✅ Separate plugin listing in JetBrains Marketplace
  • ✅ Clean, focused developer experience
  • ✅ No confusion with enterprise features
  • ✅ Simplified onboarding flow

Existing Checkmarx One Plugin:

  • ✅ No changes or regressions
  • ✅ Continues with all enterprise features
  • ✅ Existing users unaffected

Codebase:

  • ✅ Clean separation with shared libraries
  • ✅ Maintainable architecture for both plugins
  • ✅ Reduced code duplication via common-lib
  • ✅ Independent versioning and releases

References

Testing

Test Coverage Added

  • 96 unit tests with ~90% coverage
  • Tests follow McpConfigurationTest pattern (Mockito static mocking)
  • Coverage reports: build/reports/jacoco/test/html/index.html

Manual Testing Performed

✅ Plugin installs independently from Checkmarx One plugin
✅ API key authentication works without server URL
✅ Settings pages display correctly (DevAssist + Realtime Scanners)
✅ Welcome dialog shows on first launch
✅ Real-time scanners can be enabled/disabled
✅ MCP installation flow works correctly
✅ No Checkmarx One features visible in UI
✅ No regression in existing plugin-checkmarx-ast

Checklist

  • I have added documentation for new/changed functionality in this PR (if applicable).
  • All active GitHub checks for tests, formatting, and security are passing
  • The correct base branch is being used

cx-aniket-shinde and others added 30 commits January 22, 2026 13:34
…alues

- Configure common dependencies on global level
- Migrated required classes to plugin-ignite and checkmarx-ast plugin AST-133069
- Added test cases
… AST-133069

- Added icons to common-lib
- Added test cases
…m/Checkmarx/ast-jetbrains-plugin into feature/project_ignite_AST-131708

# Conflicts:
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/commands/Project.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/commands/Scan.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/commands/Triage.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/inspections/CxInspection.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/inspections/CxVisitor.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/CxToolWindowFactory.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/CxToolWindowPanel.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/CancelScanAction.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/OpenSettingsAction.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/filter/CustomStateFilter.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/filter/DynamicFilterActionGroup.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/filter/FilterBaseAction.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/group/by/GroupByBaseAction.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/group/by/GroupByDirectDependency.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/group/by/GroupByFileAction.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/group/by/GroupByPackageAction.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/group/by/GroupBySeverityAction.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/group/by/GroupByStateAction.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/group/by/GroupByVulnerabilityTypeAction.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/selection/BranchSelectionGroup.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/selection/ProjectSelectionGroup.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/selection/RootGroup.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/actions/selection/ScanSelectionGroup.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/results/tree/ResultsTreeFactory.java
#	plugin-checkmarx-ast/src/main/java/com/checkmarx/intellij/ast/window/results/tree/nodes/ResultNode.java
#	plugin-checkmarx-ast/src/main/resources/META-INF/plugin.xml
#	plugin-ignite/src/main/java/com/checkmarx/intellij/ignite/ui/actions/IgnoredFindingsToolbarActions.java
#	plugin-ignite/src/main/java/com/checkmarx/intellij/ignite/ui/actions/VulnerabilityFilterBaseAction.java
#	plugin-ignite/src/main/java/com/checkmarx/intellij/ignite/ui/actions/VulnerabilityFilterState.java
#	plugin-ignite/src/main/java/com/checkmarx/intellij/ignite/window/IgniteToolWindowFactory.java
#	plugin-ignite/src/main/resources/META-INF/plugin.xml
@gitguardian
Copy link

gitguardian bot commented Feb 17, 2026

⚠️ GitGuardian has uncovered 3 secrets following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secrets in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
11482443 Triggered Generic Password ed38b63 plugin-checkmarx-ast/src/test/java/com/checkmarx/intellij/integration/standard/data/python-vul-file.py View secret
11482444 Triggered Username Password ed38b63 plugin-checkmarx-ast/src/test/java/com/checkmarx/intellij/integration/standard/data/python-vul-file.py View secret
11482451 Triggered Generic Password ed38b63 plugin-checkmarx-ast/src/test/java/com/checkmarx/intellij/integration/standard/data/python-vul-file.py View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secrets safely. Learn here the best practices.
  3. Revoke and rotate these secrets.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the significance of such a message?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • this i have added for testing purpose, this is not needed now..
  • Changes: kept only debug log to identify plugin during initialization as its used by both the plugin
  • LOGGER.debug(format("PluginContext: Setting plugin name: %s", pluginName));

* </pre>
*/
@Service(Service.Level.APP)
public final class PluginContext {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this class thread-safe?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is app level singleton service created on initialization of the plugin. we are doing write only once on plugin initialization, so we dont need to implement explicit thread safety for this class .
Note: This class used by at a time one plugin only so thread safety not required

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Log messages at Info level only when it makes sense at that level.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to debug log, to track, if unnecessary reset called

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's avoid the word ignite in the code.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to DEVASSIST_WELCOME_AI_ERROR

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid use of Ignite word.

Copy link
Contributor

@cx-anand-nandeshwar cx-anand-nandeshwar Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed IGNITE to DEVASSIST

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we are adding log message, it should have significance.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed log to : LOGGER.debug("LicenseSyncStartupActivity: License changed for the tenant, publishing event to reset the plugin UI.");

@github-actions
Copy link

github-actions bot commented Feb 17, 2026

Logo
Checkmarx One – Scan Summary & Details239c6497-ff45-4647-8425-a2b8345a752b

New Issues (1)

Checkmarx found the following issues in this Pull Request

# Severity Issue Source File / Package Checkmarx Insight
1 LOW Log_Forging /plugin-checkmarx-devassist/src/main/java/com/checkmarx/intellij/cxdevassist/settings/CxDevAssistSettingsComponent.java: 180
detailsMethod at line 180 of /plugin-checkmarx-devassist/src/main/java/com/checkmarx/intellij/cxdevassist/settings/CxDevAssistSettingsComponent.java g...
Attack Vector

cx-atish-jadhav and others added 3 commits February 18, 2026 01:11
commit 45a8e4f
Author: atishj99 <141334503+cx-atish-jadhav@users.noreply.github.com>
Date:   Wed Feb 18 14:31:35 2026 +0530

    adding logging for tests modules

commit 8c1fc8a
Author: atishj99 <141334503+cx-atish-jadhav@users.noreply.github.com>
Date:   Wed Feb 18 13:52:32 2026 +0530

    Added jacoc test report for module devassist-lib and devassist-deploy

commit f40c22d
Author: atishj99 <141334503+cx-atish-jadhav@users.noreply.github.com>
Date:   Wed Feb 18 12:12:34 2026 +0530

    Reverted aggregated jacoco test report changes

commit 42c7e00
Author: atishj99 <141334503+cx-atish-jadhav@users.noreply.github.com>
Date:   Wed Feb 18 10:43:25 2026 +0530

    Fix: Use string task names for finalizedBy to avoid CI evaluation errors

commit 29e8f74
Author: atishj99 <141334503+cx-atish-jadhav@users.noreply.github.com>
Date:   Wed Feb 18 09:48:33 2026 +0530

    Changes for worfkflow
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

Comments