72 lines
2.2 KiB
Java
72 lines
2.2 KiB
Java
package it.unitn.molerat.repos.trackers.vuln;
|
|
|
|
import it.unitn.molerat.evidence.Changes;
|
|
import it.unitn.molerat.evidence.VulnerabilityEvidence;
|
|
import it.unitn.molerat.repos.wrappers.RepoWrapper;
|
|
|
|
import java.util.HashSet;
|
|
import java.util.Iterator;
|
|
import java.util.Set;
|
|
|
|
public class FixStatisticsVulnerabilityEvidenceTracker extends VulnerabilityEvidenceTracker {
|
|
private int addedLines = 0;
|
|
private int deletedLines = 0;
|
|
private int touchedFiles = 0;
|
|
private int touchedMethods = 0;
|
|
|
|
public FixStatisticsVulnerabilityEvidenceTracker(RepoWrapper wrapper, String fixedRev) throws Exception {
|
|
super(wrapper, fixedRev);
|
|
}
|
|
|
|
@Override
|
|
protected Set<VulnerabilityEvidence> getInitialVulnerabilityEvidence(Changes changes) throws Exception {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
protected Set<VulnerabilityEvidence> getVulnerabilityEvidence(String currentEvidenceCommit, String previousEvidenceCommit, Set<Changes> changes) throws Exception {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void trackEvidence() throws Exception {
|
|
this.changes = filterNonJavaChanges(this.changes);
|
|
Iterator<Changes> it = changes.iterator();
|
|
while (it.hasNext()) {
|
|
Changes currentChanges = it.next();
|
|
touchedFiles++;
|
|
addedLines += currentChanges.getAdditions().size();
|
|
deletedLines += currentChanges.getDeletions().size();
|
|
|
|
Set<String> methods = new HashSet<>();
|
|
Set<VulnerabilityEvidence> evidences = recordVulnerabilityEvidenceForRightFile(currentChanges.getAdditions(), currentChanges);
|
|
evidences.addAll(recordVulnerabilityEvidence(currentChanges.getDeletions(), currentChanges));
|
|
for (VulnerabilityEvidence evd : evidences) {
|
|
if (!evd.getLineContents().contains("private") &&
|
|
!evd.getLineContents().contains("protected") &&
|
|
!evd.getLineContents().contains("public")) {
|
|
methods.add(evd.getContainer());
|
|
}
|
|
}
|
|
touchedMethods += methods.size();
|
|
commits.add(currentChanges.getLeftRevision());
|
|
}
|
|
}
|
|
|
|
public int getNumberOfAddedLines() {
|
|
return addedLines;
|
|
}
|
|
|
|
public int getNumberOfDeletedLines() {
|
|
return deletedLines;
|
|
}
|
|
|
|
public int getNumberOfTouchedMethods() {
|
|
return touchedMethods;
|
|
}
|
|
|
|
public int getNumberOfTouchedFiles() {
|
|
return touchedFiles;
|
|
}
|
|
}
|