Skip to content

Commit b76064a

Browse files
AST-32018: Support Critical Severity (#152)
* Support Critical Severity * Display triage error message * Fix icons in second panel --------- Co-authored-by: Pedro Lopes <pedro.lopes@checkmarx.com>
1 parent 40eb7cd commit b76064a

6 files changed

Lines changed: 39 additions & 26 deletions

File tree

615 Bytes
Loading

checkmarx-ast-eclipse-plugin/src/com/checkmarx/eclipse/enums/ActionName.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
public enum ActionName {
44

5+
CRITICAL,
56
HIGH,
67
MEDIUM,
78
LOW,

checkmarx-ast-eclipse-plugin/src/com/checkmarx/eclipse/views/CheckmarxView.java

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public class CheckmarxView extends ViewPart implements EventHandler {
8585
public static final Image CHECKMARX_OPEN_SETTINGS_LOGO = Activator.getImageDescriptor("/icons/checkmarx-80.png")
8686
.createImage();
8787

88-
public static final Image CRITICAL_SEVERITY = Activator.getImageDescriptor("/icons/severity-critical.png")
88+
public static final Image CRITICAL_SEVERITY = Activator.getImageDescriptor("/icons/critical.png")
8989
.createImage();
9090

9191
public static final Image HIGH_SEVERITY = Activator.getImageDescriptor("/icons/high_untoggle.png").createImage();
@@ -1213,14 +1213,10 @@ protected IStatus run(IProgressMonitor arg0) {
12131213
}
12141214

12151215
private void populateTitleLabel(DisplayModel selectedItem) {
1216-
ImageData titleImageData = findSeverityImage(selectedItem).getImageData()
1217-
.scaledTo(PluginConstants.TITLE_LABEL_WIDTH, PluginConstants.TITLE_LABEL_HEIGHT);
1218-
Image titleImage = new Image(parent.getShell().getDisplay(), titleImageData);
1219-
titleLabel.setImage(titleImage);
1216+
titleLabel.setImage(findSeverityImage(selectedItem));
12201217
titleText.setText(selectedItem.getName());
12211218
titleLabel.layout();
12221219
titleText.requestLayout();
1223-
12241220
}
12251221
});
12261222
}
@@ -1233,7 +1229,7 @@ private void populateTitleLabel(DisplayModel selectedItem) {
12331229
private void createTriageSeverityAndStateCombos(DisplayModel selectedItem) {
12341230
String currentSeverity = selectedItem.getSeverity();
12351231
selectedSeverity = selectedItem.getSeverity();
1236-
String[] severity = { "HIGH", "MEDIUM", "LOW", "INFO" };
1232+
String[] severity = { "CRITICAL", "HIGH", "MEDIUM", "LOW", "INFO" };
12371233

12381234
triageSeverityComboViewew.setContentProvider(ArrayContentProvider.getInstance());
12391235
triageSeverityComboViewew.setInput(severity);
@@ -1303,9 +1299,9 @@ public void widgetSelected(SelectionEvent event) {
13031299

13041300
@Override
13051301
protected IStatus run(IProgressMonitor arg0) {
1306-
boolean successfullyUpdate = DataProvider.getInstance().triageUpdate(projectId,
1307-
similarityId, engineType, selectedState, comment, selectedSeverity);
1308-
if (successfullyUpdate) {
1302+
try {
1303+
DataProvider.getInstance().triageUpdate(projectId,similarityId, engineType, selectedState, comment, selectedSeverity);
1304+
13091305
sync.asyncExec(() -> {
13101306
selectedItem.setSeverity(selectedSeverity);
13111307
selectedItem.setState(selectedState);
@@ -1321,16 +1317,10 @@ protected IStatus run(IProgressMonitor arg0) {
13211317
commentText.setText(PluginConstants.DEFAULT_COMMENT_TXT);
13221318
commentText.setEditable(true);
13231319
});
1324-
} else {
1325-
// TODO: inform the user that update failed?
1326-
// sync.asyncExec(() -> {
1327-
// MessageBox box = new MessageBox(parent.getDisplay().getActiveShell(), SWT.CANCEL | SWT.OK);
1328-
// box.setText("Triage failed");
1329-
// // correct the message
1330-
// box.setMessage("Triage update failed. Check logs");
1331-
// box.open();
1332-
// });
1333-
1320+
} catch (Exception e) {
1321+
sync.asyncExec(() -> {
1322+
new NotificationPopUpUI(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().getDisplay(), "Triage failed", e.getMessage(), null, null, null).open();
1323+
});
13341324
}
13351325

13361326
// reset the triageButton when triage update fails

checkmarx-ast-eclipse-plugin/src/com/checkmarx/eclipse/views/DataProvider.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.Arrays;
77
import java.util.Collections;
88
import java.util.HashMap;
9+
import java.util.LinkedHashMap;
910
import java.util.List;
1011
import java.util.Map;
1112
import java.util.Optional;
@@ -38,6 +39,8 @@
3839

3940
public class DataProvider {
4041

42+
private static final List<String> SEVERITY_ORDER = Arrays.asList("CRITICAL", "HIGH", "MEDIUM", "LOW", "INFO");
43+
4144
private static final String LIMIT_FILTER="limit=10000";
4245
private static final String FILTER_SCANS_FOR_PROJECT = "project-id=%s,branch=%s,limit=10000,statuses=Completed";
4346

@@ -418,7 +421,7 @@ private Map<String, List<DisplayModel>> filterResultsByScannerType(List<DisplayM
418421
private void groupResultsBySeverity(Map<String, List<DisplayModel>> filteredResultsByScannerType) {
419422
filteredResultsByScannerType.entrySet().stream().forEach(entry -> {
420423

421-
Map<String, List<DisplayModel>> mapBySeverity = new HashMap<>();
424+
Map<String, List<DisplayModel>> mapBySeverity = new LinkedHashMap<>();
422425
String scanner = entry.getKey();
423426
List<DisplayModel> vulnerabilities = entry.getValue();
424427

@@ -432,6 +435,13 @@ private void groupResultsBySeverity(Map<String, List<DisplayModel>> filteredResu
432435
}
433436
}
434437

438+
Map<String, List<DisplayModel>> sortedMapBySeverity = new LinkedHashMap<>();
439+
SEVERITY_ORDER.forEach(severity -> {
440+
if (mapBySeverity.containsKey(severity)) {
441+
sortedMapBySeverity.put(severity, mapBySeverity.get(severity));
442+
}
443+
});
444+
435445
List<DisplayModel> children = createParentNodeByScanner(mapBySeverity);
436446

437447
filteredResultsByScannerType.put(scanner, children);
@@ -659,20 +669,20 @@ public List<Predicate> getTriageShow(UUID projectID, String similarityID, String
659669
* @param state
660670
* @param comment
661671
* @param severity
672+
* @throws Exception
662673
*/
663-
public boolean triageUpdate(UUID projectId, String similarityId, String engineType, String state, String comment, String severity) {
674+
public void triageUpdate(UUID projectId, String similarityId, String engineType, String state, String comment, String severity) throws Exception {
664675

665676
try {
666677
CxWrapper cxWrapper = authenticateWithAST();
667678

668679
if (cxWrapper != null) {
669680
cxWrapper.triageUpdate(projectId, similarityId, engineType, state, comment, severity);
670681
}
671-
672-
return true;
673682
} catch (Exception e) {
674683
CxLogger.error(String.format(PluginConstants.ERROR_UPDATING_TRIAGE, e.getMessage()), e);
675-
return false;
684+
throw new Exception(e.getMessage());
685+
676686
}
677687
}
678688

checkmarx-ast-eclipse-plugin/src/com/checkmarx/eclipse/views/filters/ActionFilters.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414

1515
public class ActionFilters {
1616

17+
private static final String ACTION_FILTER_CRITICAL_TOOLTIP = "Critical";
18+
private static final String ACTION_FILTER_CRITICAL_ICON_PATH = "/icons/critical.png";
19+
1720
private static final String ACTION_FILTER_HIGH_TOOLTIP = "High";
1821
private static final String ACTION_FILTER_HIGH_ICON_PATH = "/icons/high_untoggle.png";
1922

@@ -42,12 +45,13 @@ public ActionFilters(EventBus pluginEventBus) {
4245
public List<Action> createFilterActions(){
4346
List<Action> filters = new ArrayList<>();
4447

48+
Action filterCriticalAction = createFilterAction(ACTION_FILTER_CRITICAL_TOOLTIP, ACTION_FILTER_CRITICAL_ICON_PATH, Severity.CRITICAL, ActionName.CRITICAL);
4549
Action filterHighAction = createFilterAction(ACTION_FILTER_HIGH_TOOLTIP, ACTION_FILTER_HIGH_ICON_PATH, Severity.HIGH, ActionName.HIGH);
4650
Action filterMediumAction = createFilterAction(ACTION_FILTER_MEDIUM_TOOLTIP, ACTION_FILTER_MEDIUM_ICON_PATH, Severity.MEDIUM, ActionName.MEDIUM);
4751
Action filterLowAction = createFilterAction(ACTION_FILTER_LOW_TOOLTIP, ACTION_FILTER_LOW_ICON_PATH, Severity.LOW, ActionName.LOW);
4852
Action filterInfoAction = createFilterAction(ACTION_FILTER_INFO_TOOLTIP, ACTION_FILTER_INFO_ICON_PATH, Severity.INFO, ActionName.INFO);
4953

50-
54+
filters.add(filterCriticalAction);
5155
filters.add(filterHighAction);
5256
filters.add(filterMediumAction);
5357
filters.add(filterLowAction);

checkmarx-ast-eclipse-plugin/src/com/checkmarx/eclipse/views/filters/FilterState.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
public class FilterState {
99

10+
public static boolean critical = true;
1011
public static boolean high = true;
1112
public static boolean medium = true;
1213
public static boolean low = false;
@@ -30,6 +31,7 @@ public class FilterState {
3031

3132

3233
public static void loadFiltersFromSettings() {
34+
critical = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.CRITICAL.name(), "true"));
3335
high = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.HIGH.name(), "true"));
3436
medium = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.MEDIUM.name(), "true"));
3537
low = Boolean.parseBoolean(GlobalSettings.getFromPreferences(Severity.LOW.name(), "false"));
@@ -54,6 +56,10 @@ public static void loadFiltersFromSettings() {
5456
*/
5557
public static void setState(Severity severity) {
5658
switch(severity) {
59+
case CRITICAL:
60+
critical = !critical;
61+
GlobalSettings.storeInPreferences(Severity.CRITICAL.name(), String.valueOf(critical));
62+
break;
5763
case HIGH:
5864
high = !high;
5965
GlobalSettings.storeInPreferences(Severity.HIGH.name(), String.valueOf(high));
@@ -147,6 +153,7 @@ public static boolean isFilterStateEnabled(String state) {
147153
*/
148154
public static boolean isSeverityEnabled(String severity) {
149155
switch(Severity.getSeverity(severity)) {
156+
case CRITICAL: return critical;
150157
case HIGH: return high;
151158
case MEDIUM: return medium;
152159
case LOW: return low;
@@ -165,6 +172,7 @@ public static boolean isSeverityEnabled(String severity) {
165172
* Reset filters state
166173
*/
167174
public static void resetFilters() {
175+
critical = true;
168176
high = true;
169177
medium = true;
170178
low = false;

0 commit comments

Comments
 (0)