Skip to content
Open
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

public abstract class BaseUITest {

private static final String INFO_SUCCESSFUL_CONNECTION = "Successfully authenticated to Checkmarx One server!";
private static final String INFO_SUCCESSFUL_CONNECTION = "You are connected to Checkmarx One";

protected static final String ASSERT_FILTER_ACTIONS_IN_TOOLBAR = "All filter actions must be in the tool bar";

Expand Down
4 changes: 4 additions & 0 deletions checkmarx-ast-eclipse-plugin/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,8 @@
</perspectiveExtension>
</extension>

<extension point="org.eclipse.ui.startup">
<startup class="com.checkmarx.eclipse.startup.PluginStartup"/>
</extension>

</plugin>
Original file line number Diff line number Diff line change
Expand Up @@ -137,14 +137,23 @@ public void widgetSelected(SelectionEvent e) {
return t.getMessage();
}
}).thenAccept((result) -> Display.getDefault().syncExec(() -> {
connectionLabel.setText(result);
connectionLabel.setText(mapAuthResult(result));
getFieldEditorParent().layout();
connectionButton.setEnabled(true);
}));
}
});
}



private static String mapAuthResult(String result) {
if (result != null && result.contains(PluginConstants.AUTH_SUCCESS_PATTERN)) {
return PluginConstants.AUTH_SUCCESS_DISPLAY;
}
return result;
}

private FieldEditor space() {
return new LabelFieldEditor("", getFieldEditorParent());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.checkmarx.eclipse.startup;

import org.eclipse.ui.IStartup;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;

import com.checkmarx.eclipse.utils.CxLogger;

public class PluginStartup implements IStartup {

private static final String VIEW_ID = "com.checkmarx.eclipse.views.CheckmarxView";

@Override
public void earlyStartup() {
PlatformUI.getWorkbench().getDisplay().asyncExec(() -> {
try {
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null) {
IWorkbenchPage page = window.getActivePage();
if (page != null && page.findView(VIEW_ID) == null) {
page.showView(VIEW_ID);
}
}
} catch (PartInitException e) {
CxLogger.error("Failed to open Checkmarx One view on startup: " + e.getMessage(), e);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ public class PluginConstants {
public static final String INFO_CHANGE_SCAN_EVENT_NOT_TRIGGERED = "Change scan id event not triggered. Request already running: %s. Scan id results already retrieved: %s";
public static final String INFO_CHANGE_BRANCH_EVENT_NOT_TRIGGERED = "Change branch event not triggered. Branch already selected";
public static final String INFO_CHANGE_PROJECT_EVENT_NOT_TRIGGERED = "Change project event not triggered. Project already selected";
public static final String AUTH_SUCCESS_PATTERN = "Successfully authenticated";
public static final String AUTH_SUCCESS_DISPLAY = "You are connected to Checkmarx One";

/******************************** TREE MESSAGES ********************************/
public static final String TREE_INVALID_SCAN_ID_FORMAT = "Invalid scan id format.";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1264,13 +1264,31 @@ protected IStatus run(IProgressMonitor arg0) {
List<Project> projectList = getProjects();
if (projectList.isEmpty())
return null;
String projectName = getProjectFromId(projectList, projectId);

// Fetch the project directly by ID — the full list may not contain it (e.g. pagination limits)
Project fetchedProject = DataProvider.getInstance().getProjectById(projectId);

// Determine project name: prefer the directly-fetched result, fall back to list lookup
String projectName = (fetchedProject != null)
? fetchedProject.getName()
: getProjectFromId(projectList, projectId);

// If the project was not already in the list, prepend it so it's visible in the dropdown
if (fetchedProject != null && projectList.stream().noneMatch(p -> p.getId().equals(projectId))) {
projectList = new ArrayList<>(projectList);
projectList.add(0, fetchedProject);
}
final List<Project> finalProjectList = projectList;

currentProjectId = projectId;
GlobalSettings.storeInPreferences(GlobalSettings.PARAM_PROJECT_ID, currentProjectId);

sync.asyncExec(() -> {
projectComboViewer.setInput(projectList);
currentProjects = finalProjectList;
storeCurrentProjects = finalProjectList;
projectComboViewer.setInput(finalProjectList);
PluginUtils.setTextForComboViewer(projectComboViewer, projectName);
PluginUtils.enableComboViewer(projectComboViewer, true);
setSelectionForBranchComboViewer(scan.getBranch(), projectId);
setSelectionForScanIdComboViewer(scan.getId(), scan.getBranch());
updateStartScanButton(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,27 @@ public List<Project> getProjects() throws Exception {
return projectList;
}

/**
* Fetch a single project directly by its ID using the project show command.
* Returns null if the project cannot be retrieved.
*/
public Project getProjectById(String projectId) {
try {
CxWrapper cxWrapper = getWrapper();
if (cxWrapper != null && projectId != null && !projectId.isEmpty()) {
return cxWrapper.projectShow(UUID.fromString(projectId));
}
} catch (Exception e) {
CxLogger.error(String.format(PluginConstants.ERROR_GETTING_PROJECTS, e.getMessage()), e);
}
return null;
}

/**
* Get One projects filtered by name
*
*
* @return
* @throws Exception
* @throws Exception
*/
public List<Project> getProjects(String projectName) throws Exception {
List<Project> projectList = new ArrayList<Project>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ public class FilterState {
public static boolean critical = true;
public static boolean high = true;
public static boolean medium = true;
public static boolean low = false;
public static boolean info = false;
public static boolean low = true;
public static boolean info = true;
public static boolean groupBySeverity = true;
public static boolean groupByQueryName = false;
public static boolean groupByStateName = false;
Expand All @@ -42,8 +42,8 @@ public static void loadFiltersFromSettings() {
critical = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.CRITICAL.name(), "true"));
high = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.HIGH.name(), "true"));
medium = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.MEDIUM.name(), "true"));
low = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.LOW.name(), "false"));
info = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.INFO.name(), "false"));
low = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.LOW.name(), "true"));
info = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.INFO.name(), "true"));
groupBySeverity = Boolean
.parseBoolean(GlobalSettings.getFromPreferences(Severity.GROUP_BY_SEVERITY.name(), "true"));
groupByQueryName = Boolean
Expand Down
Loading