Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 5 additions & 1 deletion .classpath
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ checkmarx-ast-eclipse-plugin/lib/ast-cli-java-wrapper-2.4.20.jar filter=lfs diff
checkmarx-ast-eclipse-plugin/lib/ast-cli-java-wrapper-2.4.21.jar filter=lfs diff=lfs merge=lfs -text
checkmarx-ast-eclipse-plugin/lib/ast-cli-java-wrapper-2.4.23.jar filter=lfs diff=lfs merge=lfs -text
checkmarx-ast-eclipse-plugin/lib/ast-cli-java-wrapper-2.4.24.jar filter=lfs diff=lfs merge=lfs -text
devassist-lib/lib/*.jar filter=lfs diff=lfs merge=lfs -text
common-lib/lib/*.jar filter=lfs diff=lfs merge=lfs -text
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@
.vs/
*.jar
!checkmarx-ast-eclipse-plugin/lib/*.jar
!devassist-lib/lib/*.jar
!common-lib/lib/*.jar
/.vscode
110 changes: 74 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,27 @@
<ol>
<li>
<a href="#overview">Overview</a>
</li>
<li>
<a href="#getting-started">Getting Started</a>
<ul>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#setting-up">Setting Up</a></li>
<li>
<a href="#checkmarx-one-platform">Checkmarx One Platform</a>
<ul>
<li><a href="#key-features">Key Features</a></li>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#initial-setup">Initial Setup</a></li>
<li><a href="#usage">Usage</a></li>
</ul>
</li>
<li>
<a href="#checkmarx-developer-assist">Checkmarx Developer Assist</a>
<ul>
<li><a href="#key-features-1">Key Features</a></li>
<li><a href="#prerequisites-1">Prerequisites</a></li>
<li><a href="#initial-setup-1">Initial Setup</a></li>
<li><a href="#usage-1">Usage</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#usage">Usage</a></li>
<li><a href="#contribution">Contribution</a></li>
<li><a href="#license">License</a></li>
<li><a href="#contact">Contact</a></li>
Expand All @@ -54,55 +66,82 @@


<!-- Overview -->
## Overview
# Overview

Checkmarx continues to spearhead the shift-left approach to AppSec by bringing our powerful AppSec tools into your IDE. This empowers developers to identify vulnerabilities and remediate them **as they code**. The Checkmarx One Eclipse plugin integrates seamlessly into your IDE, enabling you to access the full functionality of your Checkmarx One account (SAST, SCA, IaC, and Secret Detection) directly from your IDE.
This plugin contains two separate capabilities:

Checkmarx continues to spearhead the shift-left approach to AppSec by bringing our powerful AppSec tools into your IDE. This empowers developers to identify vulnerabilities and remediate them **as they code**. The Checkmarx Eclipse plugin integrates seamlessly into your IDE, enabling you to access the full functionality of your Checkmarx One account (SAST, SCA, IaC Security) directly from your IDE.
- Checkmarx One Platform

You can run new scans, or import results from scans run in your Checkmarx One account. Checkmarx provides detailed info about each vulnerability, including remediation recommendations and examples of effective remediation. The plugin enables you to navigate from a vulnerability to the relevant source code, so that you can easily zero-in on the problematic code and start working on remediation.
- Checkmarx Developer Assist

### Main Features
* Access the full power of Checkmarx One (SAST, SCA, and IaC Security) directly from your IDE
## Checkmarx One Platform
This tool enables Checkmarx One users to access the full functionality of your Checkmarx One account (SAST, SCA, IaC, and Secret Detection) directly from your IDE. You can run new scans, or import results from scans run in your Checkmarx One account. Checkmarx provides detailed info about each vulnerability, including remediation recommendations and examples of effective remediation. The plugin enables you to navigate from a vulnerability to the relevant source code, so that you can easily zero-in on the problematic code and start working on remediation.

### Key Features
* Access the full power of Checkmarx One (SAST, SCA, IaC, and Secret Detection) directly from your IDE
* Run a new scan from your IDE even before committing the code, or import scan results from your Checkmarx One account
* Provides actionable results including remediation recommendations. Navigate from results panel directly to the highlighted vulnerable code in the editor and get right down to work on the remediation.
* Provides actionable results including remediation recommendations. Navigate from results panel directly to the highlighted vulnerable code in the editor and get right down to work on the remediation.
* Group and filter results
* Triage results (by adjusting the severity and state and adding comments) directly from the Visual Studio console
* Triage results (by adjusting the severity and state and adding comments) directly from the Eclipse console (currently supported for SAST and IaC Security)
* Links to Codebashing lessons

### Prerequisites

<!-- GETTING STARTED -->
## Getting Started
- An Eclipse installation, version 2020-09 or above.
> Supported platforms: Windows, Mac, Linux/GTK

- You have an **API key** for your Checkmarx One account. To create an
API key, see [Generating an API Key](https://checkmarx.com/resource/documents/en/34965-68618-generating-an-api-key.html)
> In order to use this integration for running an end-to-end flow of scanning a project and viewing results with the minimum required permissions, the API Key or user account should have the role `plugin-scanner`. Alternatively, they can have at a minimum the out-of-the-box composite role `ast-scanner` as well as the IAM role `default-roles`.


### Initial Setup

1. Verify that all prerequisites are in place.

2. Install the **Checkmarx One** plugin and configure the settings as described [here](https://checkmarx.com/resource/documents/en/34965-68729-installing-and-setting-up-the-checkmarx-one-eclipse-plugin.html).

### Usage

To see how you can use our tool, please refer to the [Documentation](https://docs.checkmarx.com/en/34965-68731-using-the-checkmarx-one-eclipse-plugin.html).


## Checkmarx Developer Assist
Developer Assist is an agentic AI tool that delivers real-time context-aware prevention, remediation, and guidance to developers inside the IDE.

### Key Features

* An advanced security agent that delivers real-time context-aware prevention, remediation, and guidance to developers from the IDE.​
* Real-time scanners identify risks as you code.
* **ASCA**, a lightweight source code scanner, enables developers to identify secure coding best practice violations in the file that they are working on as they code.
* Specialized real-time scanners identify vulnerable open source packages and container images, as well as exposed secrets and IaC risks.
* MCP-based agentic AI remediation.
* AI-powered explanation of risk details.
* Reduce noise by marking false positives as ignored.


### Prerequisites

- An eclipse installation, version 2019-03 (4.11) or above.
> Supported platforms: Windows, Mac, Linux/GTK
- Eclipse installation, version 2025-06 and above with GitHub Copilot
- A Checkmarx One account with a **Checkmarx One Assist** license. Also, **Dev Assist** must be activated for your tenant account in the Checkmarx One UI under **Global Settings > Plugins** page. This must be done by an account admin.
You will need to provide an **API key** for your Checkmarx One account. To create an API key, see [Generating an API Key](https://checkmarx.com/resource/documents/en/34965-68618-generating-an-api-key.html)


- You have an **API key** for your Checkmarx One account. To create an
API key, see [Generating an API Key](https://checkmarx.com/resource/documents/en/34965-68618-generating-an-api-key.html)
> In order to use this integration for running an end-to-end flow of
scanning a project and viewing results, the API Key must have at a
minimum the out-of-the-box composite role `ast-scanner` as well as
the IAM role `default-roles`.
### Setting Up
### Initial Setup

1. Verify that all prerequisites are in place.

2. Install the **Checkmarx One** plugin and configure the settings as described [here](https://checkmarx.com/resource/documents/en/34965-68729-installing-and-setting-up-the-checkmarx-one-eclipse-plugin.html).
3. After authentication, in the welcome screen, select the checkbox next to "Code Smarter with Checkmarx One Assist​".

## Usage
### Usage

To see how you can use our tool, please refer to the [Documentation](https://checkmarx.com/resource/documents/en/34965-68728-checkmarx-one-eclipse-plugin.html)
To see how you can use our tool, please refer to the [Documentation](https://docs.checkmarx.com/en/34965-68731-using-the-checkmarx-one-eclipse-plugin.html).

## How To Videos
- **Installing and Setting up the Plugin**
![GIF - How to install and set up the plugin](https://checkmarx.com/resource/documents/en/image/164fe2f621388d.gif "GIF - How to install and set up the plugin")
**GIF - AI Remediation with Developer Assist**
<PLACEHOLDER>

- **Running a Scan from the IDE**
![Running a Scan from the IDE](https://checkmarx.com/resource/documents/en/image/164fe2f62587ef.gif "Running a Scan from the IDE")

- **Loading and Viewing Scan Results**
[![Loading and Viewing Scan Results](https://checkmarx.com/resource/documents/en/image/164fe2f6237dfa.gif "Loading and Viewing Scan Results")](https://checkmarx.com/resource/documents/en/image/164fe2f6237dfa.gif "Loading and Viewing Scan Results")

## Contribution

Expand All @@ -123,7 +162,7 @@ Project Link: [https://github.com/Checkmarx/ast-eclipse-plugin](https://github.c

Find more integrations from our team [here](https://github.com/Checkmarx/ci-cd-integrations#checkmarx-ast-integrations)

© 2022 Checkmarx Ltd. All Rights Reserved.
© 2026 Checkmarx Ltd. All Rights Reserved.

[contributors-shield]: https://img.shields.io/github/contributors/Checkmarx/ast-eclipse-plugin.svg
[contributors-url]: https://github.com/Checkmarx/ast-eclipse-plugin/graphs/contributors
Expand All @@ -137,4 +176,3 @@ Find more integrations from our team [here](https://github.com/Checkmarx/ci-cd-i
[license-url]: https://github.com/Checkmarx/ast-eclipse-plugin/blob/main/LICENSE
[install-shield]: https://img.shields.io/eclipse-marketplace/dt/checkmarx-ast-plugin
[install-url]: https://marketplace.eclipse.org/content/checkmarx-ast-plugin

2 changes: 1 addition & 1 deletion ast-cli-java-wrapper.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.4.24
2.4.27
5 changes: 3 additions & 2 deletions checkmarx-ast-eclipse-plugin-tests/.classpath
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
<attribute name="maven.pomderived" value="true"/>
Expand All @@ -14,7 +14,8 @@
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="lib/mockito-core-5.14.2.jar"/>
<classpathentry kind="lib" path="lib/powermock-core-2.0.9.jar"/>
<classpathentry exported="true" kind="lib" path="lib/byte-buddy-1.17.8.jar"/>
<classpathentry exported="true" kind="lib" path="lib/byte-buddy-agent-1.17.8.jar"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
Expand Down
2 changes: 2 additions & 0 deletions checkmarx-ast-eclipse-plugin-tests/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ Require-Bundle:
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ClassPath: .,lib/mockito-core-5.14.2.jar,lib/powermock-core-*.jar, lib/byte-buddy-1.17.8.jar, lib/byte-buddy-agent-1.17.8.jar
Automatic-Module-Name: com.checkmarx.ast.eclipse.tests
Import-Package: com.checkmarx.eclipse.common.runner,
org.slf4j;version="[2.0.0,3.0.0)"
1 change: 0 additions & 1 deletion checkmarx-ast-eclipse-plugin-tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
<formats>
<format>XML</format>
<format>CSV</format>
<format>HTML</format>
</formats>
</configuration>
</execution>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,24 @@
package checkmarx.ast.eclipse.plugin.tests.integration;


import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.checkmarx.eclipse.runner.Authenticator;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.File;

import org.junit.jupiter.api.Test;
import org.slf4j.LoggerFactory;

import com.checkmarx.eclipse.common.runner.Authenticator;

public class AuthenticatorIntegrationTest extends BaseIntegrationTest {

private static final Logger logger = LoggerFactory.getLogger(AuthenticatorIntegrationTest.class);

@Mock

private Authenticator authenticator;

@Test
public void testSuccessfulAuthentication() {
authenticator = new Authenticator(LoggerFactory.getLogger(Authenticator.class));
authenticator = Authenticator.INSTANCE;
System.out.println("\n=== Starting Authentication Test ===");
System.out.println("Current directory: " + new File(".").getAbsolutePath());
System.out.println("API Key available: " + (VALID_API_KEY != null));
Expand All @@ -35,7 +31,7 @@ public void testSuccessfulAuthentication() {

@Test
public void testInvalidApiKeyAuthentication() {
authenticator = new Authenticator(LoggerFactory.getLogger(Authenticator.class));
authenticator = Authenticator.INSTANCE;
System.out.println("\n=== Starting Invalid API Key Test ===");
String invalidApiKey = "invalid-api-key";
String result = authenticator.doAuthentication(invalidApiKey, "");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import com.checkmarx.ast.wrapper.CxConfig;
import com.checkmarx.ast.wrapper.CxWrapper;
import com.checkmarx.eclipse.runner.Authenticator;
import com.checkmarx.eclipse.common.runner.Authenticator;

import checkmarx.ast.eclipse.plugin.tests.common.Environment;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;

import com.checkmarx.eclipse.common.utils.PluginConstants;

import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.eclipse.swt.widgets.Decorations;
import org.eclipse.swt.widgets.Tree;

import com.checkmarx.eclipse.utils.PluginConstants;

import checkmarx.ast.eclipse.plugin.tests.common.Environment;

public abstract class BaseUITest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.junit.jupiter.api.Test;

import com.checkmarx.eclipse.utils.PluginConstants;
import com.checkmarx.eclipse.common.utils.PluginConstants;

public class BestFixLocationTest extends BaseUITest{

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import com.checkmarx.eclipse.enums.Severity;
import com.checkmarx.eclipse.common.enums.Severity;
import com.checkmarx.eclipse.enums.State;
import com.checkmarx.eclipse.views.actions.ToolBarActions;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton;
import org.junit.jupiter.api.Test;

import com.checkmarx.eclipse.utils.PluginConstants;
import com.checkmarx.eclipse.common.utils.PluginConstants;

import checkmarx.ast.eclipse.plugin.tests.common.Environment;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.junit.jupiter.api.Test;

import com.checkmarx.eclipse.enums.Severity;
import com.checkmarx.eclipse.utils.PluginConstants;
import com.checkmarx.eclipse.common.enums.Severity;
import com.checkmarx.eclipse.common.utils.PluginConstants;

public class TestTriage extends BaseUITest {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
import org.junit.jupiter.api.Test;

import com.checkmarx.eclipse.enums.ActionName;
import com.checkmarx.eclipse.enums.Severity;
import com.checkmarx.eclipse.utils.PluginConstants;
import com.checkmarx.eclipse.common.enums.Severity;
import com.checkmarx.eclipse.common.utils.PluginConstants;
import com.checkmarx.eclipse.views.actions.ToolBarActions;

import checkmarx.ast.eclipse.plugin.tests.common.Environment;
Expand Down
Loading
Loading