Skip to content
This repository was archived by the owner on Feb 26, 2021. It is now read-only.

Commit 5fee11e

Browse files
committed
Batch all generic findings into one single csv to import it into one test in defect-dojo
1 parent 36aa383 commit 5fee11e

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

scb-persistenceproviders/defectdojo-persistenceprovider/src/main/java/io/securecodebox/persistence/DefectDojoPersistenceProvider.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import java.time.LocalDate;
4040
import java.time.format.DateTimeFormatter;
4141
import java.util.*;
42+
import java.util.stream.Collectors;
43+
import java.util.stream.Stream;
4244

4345
@Component
4446
@ConditionalOnProperty(name = "securecodebox.persistence.defectdojo.enabled", havingValue = "true")
@@ -132,20 +134,25 @@ private List<String> getRawResults(SecurityTest securityTest) throws DefectDojoP
132134
}
133135

134136
private List<String> getGenericResults(SecurityTest securityTest) {
135-
List<String> genericResults = new LinkedList<>();
136-
for(Finding finding: securityTest.getReport().getFindings()){
137-
genericResults.add(MessageFormat.format("date,title,cweid,url,severity,description,mitigation,impact,references,active,verified,falsepositive,duplicate\n" +
138-
"{0},{1},,{2},{3},{4},,,,,,{5},{6}",
139-
currentDate(),
140-
finding.getName().replace(",", " "),
141-
finding.getLocation().replace(",", " "),
142-
finding.getSeverity(),
143-
finding.getDescription().replace(",", " "),
144-
finding.isFalsePositive(),
145-
"false"
146-
));
147-
}
148-
return genericResults;
137+
final String CSV_HEADER = "date,title,cweid,url,severity,description,mitigation,impact,references,active,verified,falsepositive,duplicate";
138+
139+
List<Finding> findings = securityTest.getReport().getFindings();
140+
141+
String genericFindingsCsv = Stream.concat(
142+
Stream.of(CSV_HEADER),
143+
findings.stream().map(finding -> MessageFormat.format(
144+
"{0},{1},,{2},{3},{4},,,,,,{5},{6}",
145+
currentDate(),
146+
finding.getName().replace(",", " "),
147+
finding.getLocation().replace(",", " "),
148+
finding.getSeverity(),
149+
finding.getDescription().replace(",", " "),
150+
finding.isFalsePositive(),
151+
"false"
152+
))
153+
).collect(Collectors.joining("\n"));
154+
155+
return Collections.singletonList(genericFindingsCsv);
149156
}
150157

151158
private EngagementResponse createEngagement(SecurityTest securityTest) {

0 commit comments

Comments
 (0)