Add a flag for evidence trackers that allows to disable/enable ignoring the test files

This commit is contained in:
standash 2017-12-07 20:40:55 +01:00
parent 911f22334b
commit debe8e21ab
9 changed files with 51 additions and 10 deletions

View File

@ -12,8 +12,10 @@ public abstract class AbstractEvidenceTracker {
protected Set<Changes> changes;
protected Set<String> commits = new LinkedHashSet<>();
protected Set<String> restOfCommits = new LinkedHashSet<>();
protected boolean ignoreChangesToTests;
public AbstractEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
public AbstractEvidenceTracker(RepoWrapper wrapper, String fixedRev, boolean ignoreChangesToTests) throws Exception {
this.ignoreChangesToTests = ignoreChangesToTests;
this.fixedRevision = fixedRev;
this.repoPath = wrapper.getBasePath();
this.repoWrapper = wrapper;
@ -26,6 +28,10 @@ public abstract class AbstractEvidenceTracker {
this.changes = repoWrapper.inferChangesFromDiff(initDiff, vulnRevision, fixedRevision);
}
public AbstractEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
this(wrapper, fixedRev, true);
}
public RepoWrapper getRepoWrapper() {
return this.repoWrapper;
}
@ -42,9 +48,16 @@ public abstract class AbstractEvidenceTracker {
protected Set<Changes> filterNonJavaChanges(Set<Changes> changes) {
Set<Changes> filteredChanges = new HashSet<>();
for (Changes change : changes) {
if (!change.getPath().endsWith(".java") || change.getPath().toLowerCase().contains("test")) {
// ignore non-Java files
if (!change.getPath().endsWith(".java")) {
filteredChanges.add(change);
}
else {
// ignore tests if the corresponding setting is set
if (ignoreChangesToTests && change.getPath().toLowerCase().contains("test")) {
filteredChanges.add(change);
}
}
this.repoWrapper.filterCommentsAndBlanks(change.getDeletions());
this.repoWrapper.filterCommentsAndBlanks(change.getAdditions());
}

View File

@ -11,7 +11,11 @@ import java.util.Set;
public class DeletionVulnerabilityEvidenceTracker extends VulnerabilityEvidenceTracker {
public DeletionVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
super(wrapper, fixedRev);
super(wrapper, fixedRev, true);
}
public DeletionVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev, boolean ignoreChangesToTests) throws Exception {
super(wrapper, fixedRev, ignoreChangesToTests);
}
@Override

View File

@ -12,9 +12,12 @@ import java.util.Set;
public class EnhancedDeletionVulnerabilityEvidenceTracker extends DeletionVulnerabilityEvidenceTracker{
public EnhancedDeletionVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
super(wrapper, fixedRev);
super(wrapper, fixedRev, true);
}
public EnhancedDeletionVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev, boolean ignoreChangesToTests) throws Exception {
super(wrapper, fixedRev, ignoreChangesToTests);
}
@Override
protected Set<VulnerabilityEvidence> getInitialVulnerabilityEvidence(Changes changes) throws Exception {

View File

@ -15,7 +15,11 @@ public class FixStatisticsVulnerabilityEvidenceTracker extends VulnerabilityEvid
private int touchedMethods = 0;
public FixStatisticsVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
super(wrapper, fixedRev);
super(wrapper, fixedRev, true);
}
public FixStatisticsVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev, boolean ignoreChangesToTests) throws Exception {
super(wrapper, fixedRev, ignoreChangesToTests);
}
@Override

View File

@ -12,7 +12,11 @@ import java.util.Set;
public class PatchedMethodBodyTracker extends VulnerabilityEvidenceTracker {
public PatchedMethodBodyTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
super(wrapper, fixedRev);
super(wrapper, fixedRev, true);
}
public PatchedMethodBodyTracker(RepoWrapper wrapper, String fixedRev, boolean ignoreChangesToTests) throws Exception {
super(wrapper, fixedRev, ignoreChangesToTests);
}
@Override

View File

@ -11,7 +11,11 @@ import java.util.Set;
public class SliceDecayVulnerabilityEvidenceTracker extends SliceVulnerabilityEvidenceTracker {
public SliceDecayVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
super(wrapper, fixedRev);
super(wrapper, fixedRev, true);
}
public SliceDecayVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev, boolean ignoreChangesToTests) throws Exception {
super(wrapper, fixedRev, ignoreChangesToTests);
}
@Override

View File

@ -14,7 +14,11 @@ import java.util.TreeMap;
public class SliceVulnerabilityEvidenceTracker extends VulnerabilityEvidenceTracker {
public SliceVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
super(wrapper, fixedRev);
super(wrapper, fixedRev, true);
}
public SliceVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev, boolean ignoreChangesToTests) throws Exception {
super(wrapper, fixedRev, ignoreChangesToTests);
}
@Override

View File

@ -13,7 +13,11 @@ public abstract class VulnerabilityEvidenceTracker extends AbstractEvidenceTrack
protected Map<String, Set<VulnerabilityEvidence>> evidences = new LinkedHashMap<String, Set<VulnerabilityEvidence>>();
public VulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
super(wrapper, fixedRev);
super(wrapper, fixedRev, true);
}
public VulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev, boolean ignoreChangesToTests) throws Exception {
super(wrapper, fixedRev, ignoreChangesToTests);
}
@Override

View File

@ -43,7 +43,8 @@ public class VulnerabilityEvidenceTrackerFactory {
break;
case "fixstatisticsvulnerabilityevidencetracker":
vulnerabilityEvidenceTracker = new FixStatisticsVulnerabilityEvidenceTracker(wrapper, fixedRev);
// include also commits where only tests have been changed
vulnerabilityEvidenceTracker = new FixStatisticsVulnerabilityEvidenceTracker(wrapper, fixedRev, false);
break;
default: