X-Git-Url: http://jaekl.net/gitweb/?p=cfb.git;a=blobdiff_plain;f=prod%2Fnet%2Fjaekl%2Fcfb%2Fanalyze%2FDelta.java;h=865b5fce57fdbf7c9b21807616f4132ffd226752;hp=e2853e0b445cd6294f2c9667f9fb94d0630681f4;hb=1b35159cf2ff8d86b037f7d442f7b1f4c8e3b2f3;hpb=358d80a86ac7c79cd57b81a4f1708da80db2f0ec diff --git a/prod/net/jaekl/cfb/analyze/Delta.java b/prod/net/jaekl/cfb/analyze/Delta.java index e2853e0..865b5fc 100644 --- a/prod/net/jaekl/cfb/analyze/Delta.java +++ b/prod/net/jaekl/cfb/analyze/Delta.java @@ -1,18 +1,26 @@ package net.jaekl.cfb.analyze; +import java.io.PrintWriter; import java.util.HashSet; +import net.jaekl.cfb.store.Run; import net.jaekl.cfb.xml.BugInstance; // Compute and store the delta (difference) between two analyses public class Delta { + Run m_earlier; + Run m_later; + HashSet m_fixed; // bugs that have been fixed HashSet m_common; // bugs that are present in both versions HashSet m_new; // bugs introduced in the new version public Delta(Analysis before, Analysis after) { + m_earlier = new Run(before); + m_later = new Run(after); + m_fixed = new HashSet(); m_common = new HashSet(); m_new = new HashSet(); @@ -29,6 +37,32 @@ public class Delta { public BugInstance[] getNew() { return m_new.toArray(new BugInstance[m_new.size()]); } public int getNumNew() { return m_new.size(); } + public Run getEarlier() { return m_earlier; } + public Run getLater() { return m_later; } + + public void dump(PrintWriter pw) { + pw.println("========================="); + pw.println(" NEW BUGS (" + m_new.size() + ")"); + pw.println("-------------------------"); + for (BugInstance bug : m_new) { + bug.dump(pw, 2); + } + + pw.println("========================="); + pw.println(" FIXED BUGS (" + m_fixed.size() + ")"); + pw.println("-------------------------"); + for (BugInstance bug : m_fixed) { + bug.dump(pw, 2); + } + + pw.println("========================="); + pw.println(" OLD BUGS (" + m_common.size() + ")"); + pw.println("-------------------------"); + for (BugInstance bug : m_common) { + bug.dump(pw, 2); + } + } + void computeDelta(Analysis before, Analysis after) { m_fixed.clear(); @@ -37,7 +71,9 @@ public class Delta { HashSet beforeBugs = new HashSet(); - beforeBugs.addAll(before.getBugCollection().getBugs()); + if (null != before) { + beforeBugs.addAll(before.getBugCollection().getBugs()); + } for (BugInstance bug : after.getBugCollection().getBugs()) { if (beforeBugs.contains(bug)) { @@ -48,6 +84,10 @@ public class Delta { } } + if (null == before) { + return; + } + for (BugInstance bug : before.getBugCollection().getBugs()) { if (! m_common.contains(bug)) { m_fixed.add(bug);