foss-vuln-tracker/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/VulnerabilityEvidenceTracke...

74 lines
3.2 KiB
Java

package it.unitn.molerat.repos.trackers.vuln;
import it.unitn.molerat.repos.wrappers.GitRepoWrapper;
import it.unitn.molerat.repos.wrappers.RepoWrapper;
import it.unitn.molerat.repos.wrappers.SvnRepoWrapper;
public class VulnerabilityEvidenceTrackerFactory {
public static VulnerabilityEvidenceTracker getTracker(String repoRoot, String fixedRev, String wrapperType, String trackerType) throws Exception {
RepoWrapper wrapper = null;
switch (wrapperType.toLowerCase()) {
case "svn":
wrapper = new SvnRepoWrapper(repoRoot);
break;
case "git":
wrapper = new GitRepoWrapper(repoRoot);
break;
default:
throw new Exception("There is currently no support for '" + wrapperType + "'");
}
VulnerabilityEvidenceTracker vulnerabilityEvidenceTracker = null;
switch (trackerType.toLowerCase()) {
case "deletionvulnerabilityevidencetracker":
vulnerabilityEvidenceTracker = new DeletionVulnerabilityEvidenceTracker(wrapper, fixedRev);
break;
case "slicevulnerabilityevidencetracker":
vulnerabilityEvidenceTracker = new SliceVulnerabilityEvidenceTracker(wrapper, fixedRev);
break;
case "slicedecayvulnerabilityevidencetracker":
vulnerabilityEvidenceTracker = new SliceDecayVulnerabilityEvidenceTracker(wrapper, fixedRev);
break;
case "patchedmethodbodytracker":
vulnerabilityEvidenceTracker = new PatchedMethodBodyTracker(wrapper, fixedRev);
break;
case "enhanceddeletionvulnerabilityevidencetracker":
vulnerabilityEvidenceTracker = new EnhancedDeletionVulnerabilityEvidenceTracker(wrapper, fixedRev);
break;
case "fixstatisticsvulnerabilityevidencetracker":
vulnerabilityEvidenceTracker = new FixStatisticsVulnerabilityEvidenceTracker(wrapper, fixedRev);
break;
default:
throw new Exception("There is no such molerat.evidence tracker as '" + trackerType + "'");
}
return vulnerabilityEvidenceTracker;
}
public static String getTrackersList() {
StringBuilder builder = new StringBuilder();
builder.append("--------------------\n");
builder.append("The list of available vulnerability molerat.evidence trackers:\n");
builder.append("--------------------\n");
builder.append("\n");
builder.append("\t\"SliceDecayVulnerabilityEvidenceTracker\" - track intra-procedural slice over the fixed lines.\n");
builder.append("\n");
builder.append("\t\"DeletionVulnerabilityEvidenceTracker\" - track only the lines deleted during a fix.\n");
builder.append("\n");
builder.append("\t\"PatchedMethodBodyTracker\" - track the entire fixed methods.\n");
builder.append("\n");
builder.append("\t\"EnhancedDeletionVulnerabilityEvidenceTracker\" - track only the lines deleted during a fix, " +
"or the entire fixed methods if there are no deleted lines.\n");
builder.append("\n");
builder.append("--------------------\n");
return builder.toString();
}
}