diff --git a/molerat/src/main/java/it/unitn/molerat/repos/trackers/AbstractEvidenceTracker.java b/molerat/src/main/java/it/unitn/molerat/repos/trackers/AbstractEvidenceTracker.java index 7309af8..165b028 100644 --- a/molerat/src/main/java/it/unitn/molerat/repos/trackers/AbstractEvidenceTracker.java +++ b/molerat/src/main/java/it/unitn/molerat/repos/trackers/AbstractEvidenceTracker.java @@ -12,8 +12,10 @@ public abstract class AbstractEvidenceTracker { protected Set changes; protected Set commits = new LinkedHashSet<>(); protected Set 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 filterNonJavaChanges(Set changes) { Set 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()); } diff --git a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/DeletionVulnerabilityEvidenceTracker.java b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/DeletionVulnerabilityEvidenceTracker.java index 650096a..a197f43 100644 --- a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/DeletionVulnerabilityEvidenceTracker.java +++ b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/DeletionVulnerabilityEvidenceTracker.java @@ -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 diff --git a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/EnhancedDeletionVulnerabilityEvidenceTracker.java b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/EnhancedDeletionVulnerabilityEvidenceTracker.java index 887ea10..afb7310 100644 --- a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/EnhancedDeletionVulnerabilityEvidenceTracker.java +++ b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/EnhancedDeletionVulnerabilityEvidenceTracker.java @@ -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 getInitialVulnerabilityEvidence(Changes changes) throws Exception { diff --git a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/FixStatisticsVulnerabilityEvidenceTracker.java b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/FixStatisticsVulnerabilityEvidenceTracker.java index f631932..310c499 100644 --- a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/FixStatisticsVulnerabilityEvidenceTracker.java +++ b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/FixStatisticsVulnerabilityEvidenceTracker.java @@ -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 diff --git a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/PatchedMethodBodyTracker.java b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/PatchedMethodBodyTracker.java index ec381d7..6bdd90c 100644 --- a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/PatchedMethodBodyTracker.java +++ b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/PatchedMethodBodyTracker.java @@ -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 diff --git a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/SliceDecayVulnerabilityEvidenceTracker.java b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/SliceDecayVulnerabilityEvidenceTracker.java index 68d587a..d8ced32 100644 --- a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/SliceDecayVulnerabilityEvidenceTracker.java +++ b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/SliceDecayVulnerabilityEvidenceTracker.java @@ -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 diff --git a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/SliceVulnerabilityEvidenceTracker.java b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/SliceVulnerabilityEvidenceTracker.java index 38c37c1..31b8053 100644 --- a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/SliceVulnerabilityEvidenceTracker.java +++ b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/SliceVulnerabilityEvidenceTracker.java @@ -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 diff --git a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/VulnerabilityEvidenceTracker.java b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/VulnerabilityEvidenceTracker.java index dbb2048..be66aec 100644 --- a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/VulnerabilityEvidenceTracker.java +++ b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/VulnerabilityEvidenceTracker.java @@ -13,7 +13,11 @@ public abstract class VulnerabilityEvidenceTracker extends AbstractEvidenceTrack protected Map> evidences = new LinkedHashMap>(); 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 diff --git a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/VulnerabilityEvidenceTrackerFactory.java b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/VulnerabilityEvidenceTrackerFactory.java index d95b659..451fecd 100644 --- a/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/VulnerabilityEvidenceTrackerFactory.java +++ b/molerat/src/main/java/it/unitn/molerat/repos/trackers/vuln/VulnerabilityEvidenceTrackerFactory.java @@ -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: