diff --git a/src/main/java/com/sap/oss/phosphor/fosstars/data/AbstractStaticScanToolsDataProvider.java b/src/main/java/com/sap/oss/phosphor/fosstars/data/AbstractStaticScanToolsDataProvider.java
index 38e9f1214..b38aec31a 100644
--- a/src/main/java/com/sap/oss/phosphor/fosstars/data/AbstractStaticScanToolsDataProvider.java
+++ b/src/main/java/com/sap/oss/phosphor/fosstars/data/AbstractStaticScanToolsDataProvider.java
@@ -1,36 +1,102 @@
package com.sap.oss.phosphor.fosstars.data;
+import static com.sap.oss.phosphor.fosstars.github.GitHubVisitor.Location.GITHUB_ACTION;
+import static com.sap.oss.phosphor.fosstars.github.GitHubVisitor.Location.INI_CONFIG;
+import static com.sap.oss.phosphor.fosstars.github.GitHubVisitor.Location.PRE_COMMIT_HOOK;
+
import com.sap.oss.phosphor.fosstars.data.github.GitHubCachingDataProvider;
import com.sap.oss.phosphor.fosstars.data.github.GitHubDataFetcher;
import com.sap.oss.phosphor.fosstars.data.github.LocalRepository;
+import com.sap.oss.phosphor.fosstars.github.AbstractGitHubVisitor;
+import com.sap.oss.phosphor.fosstars.github.GitHubVisitor;
+import com.sap.oss.phosphor.fosstars.github.GitHubVisitor.Location;
import com.sap.oss.phosphor.fosstars.model.Feature;
+import com.sap.oss.phosphor.fosstars.model.subject.oss.GitHubProject;
+import com.sap.oss.phosphor.fosstars.util.Yaml;
import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+import java.util.function.BiPredicate;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
+import org.apache.commons.collections4.IteratorUtils;
/**
* This is a base class for data providers that would like to check if the project uses a Static
* Analysis Scan Tool (SAST) and also determines how the project uses it.
*/
public abstract class AbstractStaticScanToolsDataProvider extends
- GitHubCachingDataProvider implements StaticAnalysisScanTool {
+ GitHubCachingDataProvider {
/**
* A directory where GitHub Actions configs are stored.
*/
private static final String GITHUB_ACTIONS_DIRECTORY = ".github/workflows";
+ /**
+ * A pre-commit hook standard config file path.
+ *
+ * @see Pre-commit hook config
+ * file
+ */
+ private static final String PRE_COMMIT_HOOK_CONFIG = ".pre-commit-config.yaml";
+
+ /**
+ * A list of extensions of GitHub Actions configs.
+ */
+ private static final List GITHUB_ACTIONS_CONFIG_EXTENSIONS =
+ Arrays.asList(".yaml", ".yml");
+
/**
* A list of extensions of GitHub Actions configs.
*/
- private static final List GITHUB_ACTIONS_CONFIG_EXTENSIONS
- = Arrays.asList(".yaml", ".yml");
+ private static final String GITHUB_INI_CONFIG_EXTENSION = ".ini";
+
+ /**
+ * A Bi-Predicate to evaluate each context of Map type extracted from the GitHub Action jobs.
+ */
+ private static final BiPredicate