74 lines
3.2 KiB
Java
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();
|
|
}
|
|
}
|