Add a flag for evidence trackers that allows to disable/enable ignoring the test files
This commit is contained in:
parent
911f22334b
commit
debe8e21ab
|
@ -12,8 +12,10 @@ public abstract class AbstractEvidenceTracker {
|
||||||
protected Set<Changes> changes;
|
protected Set<Changes> changes;
|
||||||
protected Set<String> commits = new LinkedHashSet<>();
|
protected Set<String> commits = new LinkedHashSet<>();
|
||||||
protected Set<String> restOfCommits = 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.fixedRevision = fixedRev;
|
||||||
this.repoPath = wrapper.getBasePath();
|
this.repoPath = wrapper.getBasePath();
|
||||||
this.repoWrapper = wrapper;
|
this.repoWrapper = wrapper;
|
||||||
|
@ -26,6 +28,10 @@ public abstract class AbstractEvidenceTracker {
|
||||||
this.changes = repoWrapper.inferChangesFromDiff(initDiff, vulnRevision, fixedRevision);
|
this.changes = repoWrapper.inferChangesFromDiff(initDiff, vulnRevision, fixedRevision);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AbstractEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
|
||||||
|
this(wrapper, fixedRev, true);
|
||||||
|
}
|
||||||
|
|
||||||
public RepoWrapper getRepoWrapper() {
|
public RepoWrapper getRepoWrapper() {
|
||||||
return this.repoWrapper;
|
return this.repoWrapper;
|
||||||
}
|
}
|
||||||
|
@ -42,9 +48,16 @@ public abstract class AbstractEvidenceTracker {
|
||||||
protected Set<Changes> filterNonJavaChanges(Set<Changes> changes) {
|
protected Set<Changes> filterNonJavaChanges(Set<Changes> changes) {
|
||||||
Set<Changes> filteredChanges = new HashSet<>();
|
Set<Changes> filteredChanges = new HashSet<>();
|
||||||
for (Changes change : changes) {
|
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);
|
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.getDeletions());
|
||||||
this.repoWrapper.filterCommentsAndBlanks(change.getAdditions());
|
this.repoWrapper.filterCommentsAndBlanks(change.getAdditions());
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,11 @@ import java.util.Set;
|
||||||
public class DeletionVulnerabilityEvidenceTracker extends VulnerabilityEvidenceTracker {
|
public class DeletionVulnerabilityEvidenceTracker extends VulnerabilityEvidenceTracker {
|
||||||
|
|
||||||
public DeletionVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
|
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
|
@Override
|
||||||
|
|
|
@ -12,9 +12,12 @@ import java.util.Set;
|
||||||
public class EnhancedDeletionVulnerabilityEvidenceTracker extends DeletionVulnerabilityEvidenceTracker{
|
public class EnhancedDeletionVulnerabilityEvidenceTracker extends DeletionVulnerabilityEvidenceTracker{
|
||||||
|
|
||||||
public EnhancedDeletionVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
|
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
|
@Override
|
||||||
protected Set<VulnerabilityEvidence> getInitialVulnerabilityEvidence(Changes changes) throws Exception {
|
protected Set<VulnerabilityEvidence> getInitialVulnerabilityEvidence(Changes changes) throws Exception {
|
||||||
|
|
|
@ -15,7 +15,11 @@ public class FixStatisticsVulnerabilityEvidenceTracker extends VulnerabilityEvid
|
||||||
private int touchedMethods = 0;
|
private int touchedMethods = 0;
|
||||||
|
|
||||||
public FixStatisticsVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
|
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
|
@Override
|
||||||
|
|
|
@ -12,7 +12,11 @@ import java.util.Set;
|
||||||
public class PatchedMethodBodyTracker extends VulnerabilityEvidenceTracker {
|
public class PatchedMethodBodyTracker extends VulnerabilityEvidenceTracker {
|
||||||
|
|
||||||
public PatchedMethodBodyTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
|
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
|
@Override
|
||||||
|
|
|
@ -11,7 +11,11 @@ import java.util.Set;
|
||||||
public class SliceDecayVulnerabilityEvidenceTracker extends SliceVulnerabilityEvidenceTracker {
|
public class SliceDecayVulnerabilityEvidenceTracker extends SliceVulnerabilityEvidenceTracker {
|
||||||
|
|
||||||
public SliceDecayVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
|
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
|
@Override
|
||||||
|
|
|
@ -14,7 +14,11 @@ import java.util.TreeMap;
|
||||||
public class SliceVulnerabilityEvidenceTracker extends VulnerabilityEvidenceTracker {
|
public class SliceVulnerabilityEvidenceTracker extends VulnerabilityEvidenceTracker {
|
||||||
|
|
||||||
public SliceVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
|
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
|
@Override
|
||||||
|
|
|
@ -13,7 +13,11 @@ public abstract class VulnerabilityEvidenceTracker extends AbstractEvidenceTrack
|
||||||
protected Map<String, Set<VulnerabilityEvidence>> evidences = new LinkedHashMap<String, Set<VulnerabilityEvidence>>();
|
protected Map<String, Set<VulnerabilityEvidence>> evidences = new LinkedHashMap<String, Set<VulnerabilityEvidence>>();
|
||||||
|
|
||||||
public VulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
|
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
|
@Override
|
||||||
|
|
|
@ -43,7 +43,8 @@ public class VulnerabilityEvidenceTrackerFactory {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "fixstatisticsvulnerabilityevidencetracker":
|
case "fixstatisticsvulnerabilityevidencetracker":
|
||||||
vulnerabilityEvidenceTracker = new FixStatisticsVulnerabilityEvidenceTracker(wrapper, fixedRev);
|
// include also commits where only tests have been changed
|
||||||
|
vulnerabilityEvidenceTracker = new FixStatisticsVulnerabilityEvidenceTracker(wrapper, fixedRev, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue