diff --git a/src/main/java/com/contrastsecurity/csvdltool/VulGetWithProgress.java b/src/main/java/com/contrastsecurity/csvdltool/VulGetWithProgress.java index 482a10a..5c0dae5 100644 --- a/src/main/java/com/contrastsecurity/csvdltool/VulGetWithProgress.java +++ b/src/main/java/com/contrastsecurity/csvdltool/VulGetWithProgress.java @@ -269,7 +269,7 @@ public void run() { String appId = fullAppMap.get(appLabel).getAppId(); monitor.setTaskName(String.format("脆弱性の情報を取得...[%s] %s (%d/%d)", org.getName(), appName, appIdx, dstApps.size())); // コンプライアンスポリシーの情報を取得 - Map> securityStandardVulnMap = new HashMap>(); + Map> securityStandardVulnUuidMap = new HashMap>(); if (validCompliancePolicy) { SubProgressMonitor sub2_1Monitor = new SubProgressMonitor(sub2Monitor, 20); Api filterSecurityStandardApi = new FilterSecurityStandardApi(this.shell, this.ps, org); @@ -297,7 +297,7 @@ public void run() { allVuls.addAll(tmpVuls); traceByFilterIncompleteFlg = totalTraceByFilterCount > allVuls.size(); } - securityStandardVulnMap.put(ssFilter.getLabel(), allVuls); + securityStandardVulnUuidMap.put(ssFilter.getLabel(), allVuls.stream().map(Vulnerability::getUuid).collect(Collectors.toList())); sub2_1Monitor.worked(1); } } @@ -316,6 +316,11 @@ public void run() { continue; } traces.add(insertIdx, instance.getUuid()); + securityStandardVulnUuidMap.forEach((k, v) -> { + if (v.contains(trace_id)) { + v.add(instance.getUuid()); + } + }); } } } @@ -504,14 +509,8 @@ public void run() { case VUL_26: // ==================== 26. コンプライアンスポリシー ==================== List ssNameList = new ArrayList(); - securityStandardVulnMap.forEach((k, v) -> { - boolean matchFlg = false; - for (Vulnerability vul : v) { - if (trace_id.equals(vul.getUuid())) { - matchFlg |= true; - } - } - if (matchFlg) { + securityStandardVulnUuidMap.forEach((k, v) -> { + if (v.contains(trace_id)) { ssNameList.add(k); } });