diff --git a/src/main/java/com/blackduck/integration/detect/configuration/DetectConfigurationFactory.java b/src/main/java/com/blackduck/integration/detect/configuration/DetectConfigurationFactory.java index 6bf81a6575..f36891f08c 100644 --- a/src/main/java/com/blackduck/integration/detect/configuration/DetectConfigurationFactory.java +++ b/src/main/java/com/blackduck/integration/detect/configuration/DetectConfigurationFactory.java @@ -232,11 +232,22 @@ public DetectToolFilter createToolFilter(RunDecision runDecision, BlackDuckDecis AllNoneEnumCollection excludedTools = detectConfiguration.getValue(DetectProperties.DETECT_TOOLS_EXCLUDED); ExcludeIncludeEnumFilter filter = new ExcludeIncludeEnumFilter<>(excludedTools, includedTools, scanTypeEvidenceMap); - boolean iacEnabled = includedTools.containsValue(DetectTool.IAC_SCAN) || !detectConfiguration.getValue(DetectProperties.DETECT_IAC_SCAN_PATHS).isEmpty(); + boolean iacEnabled = isIacScanEnabled(includedTools, excludedTools); return new DetectToolFilter(filter, impactEnabled.orElse(false), iacEnabled, runDecision, blackDuckDecision); } + private boolean isIacScanEnabled(AllNoneEnumCollection includedTools, AllNoneEnumCollection excludedTools) { + boolean containsAll = includedTools.containsAll(); // Checking whether --detect.tools=ALL is set or not + boolean containsNone = includedTools.isEmpty(); // Checking whether --detect.tools property is unset or not + boolean iacIncluded = includedTools.containsValue(DetectTool.IAC_SCAN); // Checking whether --detect.tools=IAC_SCAN is set or not + boolean iacExcluded = excludedTools.containsValue(DetectTool.IAC_SCAN); // Checking whether --detect.tools.excluded=IAC_SCAN is set or not + + // Enable IAC_SCAN only if it is included by detect.tools (ALL, unset, or explicitly included) and not excluded by detect.tools.excluded. + // The detect.iac.scan.paths property does not affect whether IAC_SCAN runs. + return (containsAll || containsNone || iacIncluded) && !iacExcluded; + } + public RapidScanOptions createRapidScanOptions() { RapidCompareMode rapidCompareMode = detectConfiguration.getValue(DetectProperties.DETECT_BLACKDUCK_RAPID_COMPARE_MODE); BlackduckScanMode scanMode= detectConfiguration.getValue(DetectProperties.DETECT_BLACKDUCK_SCAN_MODE);