use of com.blackducksoftware.integration.hub.detect.workflow.search.result.DetectorEvaluation in project hub-detect by blackducksoftware.
the class DetectorFinder method findApplicableBomTools.
private List<DetectorEvaluation> findApplicableBomTools(final List<File> directoriesToSearch, final Set<Detector> appliedBefore, final int depth, final DetectorFinderOptions options) throws DetectorException, DetectUserFriendlyException {
final List<DetectorEvaluation> results = new ArrayList<>();
if (depth > options.getMaximumDepth()) {
return results;
}
if (null == directoriesToSearch || directoriesToSearch.size() == 0) {
return results;
}
for (final File directory : directoriesToSearch) {
if (depth > 0 && options.getDetectorSearchFilter().shouldExclude(directory)) {
// NEVER skip at depth 0.
logger.info("Skipping excluded directory: " + directory.getPath());
continue;
}
logger.info("Searching directory: " + directory.getPath());
final Set<DetectorType> applicableTypes = new HashSet<>();
final Set<Detector> applied = new HashSet<>();
final List<DetectorEvaluation> evaluations = processDirectory(directory, appliedBefore, depth, options);
results.addAll(evaluations);
final List<Detector> appliedBomTools = evaluations.stream().filter(it -> it.isApplicable()).map(it -> it.getDetector()).collect(Collectors.toList());
applied.addAll(appliedBomTools);
// TODO: Used to have a remaining detectors and would bail early here, not sure how to go about that?
final Set<Detector> everApplied = new HashSet<>();
everApplied.addAll(applied);
everApplied.addAll(appliedBefore);
final List<File> subdirectories = getSubDirectories(directory, options.getDetectorSearchFilter());
final List<DetectorEvaluation> recursiveResults = findApplicableBomTools(subdirectories, everApplied, depth + 1, options);
results.addAll(recursiveResults);
logger.debug(directory + ": " + applicableTypes.stream().map(it -> it.toString()).collect(Collectors.joining(", ")));
}
return results;
}
use of com.blackducksoftware.integration.hub.detect.workflow.search.result.DetectorEvaluation in project hub-detect by blackducksoftware.
the class OverviewSummarizer method createData.
private Stream<OverviewSummaryData> createData(final String directory, final List<DetectorEvaluation> evaluations) {
List<OverviewSummaryData> overviewSummaryDatas = new ArrayList<>();
for (DetectorEvaluation evaluation : evaluations) {
if (evaluation.isApplicable()) {
String name = evaluation.getDetector().getName();
boolean wasExtractable = evaluation.isExtractable();
String error = "";
if (!wasExtractable) {
error = evaluation.getExtractabilityMessage();
}
boolean wasExtracted = evaluation.getExtraction() != null && evaluation.getExtraction().result == Extraction.ExtractionResultType.SUCCESS;
if (evaluation.getExtraction() != null && StringUtils.isNotBlank(evaluation.getExtraction().description)) {
error = evaluation.getExtraction().description;
}
Map<String, String> associatedData = new HashMap<>();
ObjectPrinter.populateObjectPrivate(null, evaluation.getDetector(), associatedData);
OverviewSummaryData overviewSummaryData = new OverviewSummaryData(directory, name, wasExtractable, wasExtracted, associatedData, error);
overviewSummaryDatas.add(overviewSummaryData);
}
}
return overviewSummaryDatas.stream();
}
use of com.blackducksoftware.integration.hub.detect.workflow.search.result.DetectorEvaluation in project hub-detect by blackducksoftware.
the class DetectorManager method runDetectors.
public DetectorToolResult runDetectors() throws DetectUserFriendlyException {
List<DetectorEvaluation> detectorEvaluations = new ArrayList<>();
// search
SearchResult searchResult = searchManager.performSearch();
eventSystem.publishEvent(Event.SearchCompleted, searchResult);
detectorEvaluations.addAll(searchResult.getDetectorEvaluations());
// prepare
PreparationResult preparationResult = preparationManager.prepareExtractions(detectorEvaluations);
eventSystem.publishEvent(Event.PreparationsCompleted, preparationResult);
// extract
ExtractionResult extractionResult = extractionManager.performExtractions(detectorEvaluations);
eventSystem.publishEvent(Event.ExtractionsCompleted, extractionResult);
// create results
DetectorToolResult detectorToolResult = new DetectorToolResult();
detectorToolResult.evaluatedDetectors = detectorEvaluations;
detectorToolResult.bomToolCodeLocations = extractionResult.getDetectCodeLocations();
detectorToolResult.applicableDetectorTypes = searchResult.getApplicableBomTools();
detectorToolResult.failedDetectorTypes.addAll(preparationResult.getFailedBomToolTypes());
detectorToolResult.failedDetectorTypes.addAll(extractionResult.getFailedBomToolTypes());
detectorToolResult.succesfullDetectorTypes.addAll(preparationResult.getSuccessfulBomToolTypes());
detectorToolResult.succesfullDetectorTypes.addAll(extractionResult.getSuccessfulBomToolTypes());
detectorToolResult.succesfullDetectorTypes.removeIf(it -> detectorToolResult.failedDetectorTypes.contains(it));
// post status
Map<DetectorType, StatusType> detectorStatus = new HashMap<>();
detectorToolResult.succesfullDetectorTypes.forEach(it -> detectorStatus.put(it, StatusType.SUCCESS));
detectorToolResult.failedDetectorTypes.forEach(it -> detectorStatus.put(it, StatusType.FAILURE));
detectorStatus.forEach((detector, status) -> eventSystem.publishEvent(Event.StatusSummary, new DetectorStatus(detector, status)));
return detectorToolResult;
}
Aggregations