public void putPackageStats(String packageName, int numClasses, int size) { hasPackageStats = true; PackageStats stat = packageStatsMap.get(packageName); if (stat == null) { stat = new PackageStats(packageName, numClasses, size); totalSizeFromPackageStats += size; totalClassesFromPackageStats += numClasses; packageStatsMap.put(packageName, stat); } else { totalSizeFromPackageStats += size - stat.size(); totalClassesFromPackageStats += numClasses - stat.getNumClasses(); stat.setNumClasses(numClasses); stat.setSize(size); } }
public void addClass(String name, String sourceFile, boolean isInterface, int size, boolean updatePackageStats) { ClassStats classStats = getClassStats(name, sourceFile); classStats.setInterface(isInterface); classStats.setSize(size); addClass(classStats, updatePackageStats); }
/** * Called when a bug is reported. */ public void addBug(BugInstance bug) { SourceLineAnnotation source = bug.getPrimarySourceLineAnnotation(); PackageStats stat = getPackageStats(source.getPackageName()); stat.addError(bug); ++totalErrors[0]; int priority = bug.getPriority(); if (priority >= 1) { ++totalErrors[Math.min(priority, totalErrors.length - 1)]; } }
public void recomputeFromComponents() { if (!hasClassStats && !hasPackageStats) { return; } for (int i = 0; i < totalErrors.length; i++) { totalErrors[i] = 0; } totalSize = 0; totalClasses = 0; totalSizeFromPackageStats = 0; totalClassesFromPackageStats = 0; for (PackageStats stats : packageStatsMap.values()) { if (hasClassStats) { stats.recomputeFromClassStats(); } totalSize += stats.size(); totalClasses += stats.getNumClasses(); for (int i = 0; i < totalErrors.length; i++) { totalErrors[i] += stats.getBugsAtPriority(i); } } }
public void generateTreeMap(BugCollection bugCollection) { for (PackageStats p : bugCollection.getProjectStats().getPackageStats()) { if (p.getTotalBugs() > 0) { buggyPackages.add(p.getPackageName()); addInteriorPackages(p.getPackageName()); if (p.getTotalBugs() == 0) { cleanCode(p.getPackageName(), p.size(), p.getClassStats().size()); System.out.println("INTEGER\tINTEGER\tINTEGER\tINTEGER\tFLOAT"); for (PackageStats p : bugCollection.getProjectStats().getPackageStats()) { if (p.getTotalBugs() > 0) { int high = p.getBugsAtPriority(Priorities.HIGH_PRIORITY); int normal = p.getBugsAtPriority(Priorities.NORMAL_PRIORITY); System.out.printf("%d\t%d\t%d\t%d\t%g\t\t%s", p.size(), p.getClassStats().size(), high, high + normal, (high + normal) * 1000.0 / p.size(), p.getPackageName().substring(11).replace('.', '\t')); if (isInteriorPackage(p.getPackageName())) { System.out.print("\t*");
stats.getCodeSize()); for (PackageStats p : stats.getPackageStats()) { if (p.getTotalBugs() > 4) { double packageDensity = density(p.getTotalBugs(), p.size()); if (Double.isNaN(packageDensity) || packageDensity < projectDensity) { continue; printRow("package", p.getPackageName(), packageDensity, p.getTotalBugs(), p.size()); for (ClassStats c : p.getSortedClassStats()) { if (c.getTotalBugs() > 4) { double density = density(c.getTotalBugs(), c.size());
ProjectStats projectStats = bugCollection.getProjectStats(); for (PackageStats ps : projectStats.getPackageStats()) { int num = ps.getNumClasses(); if (ClassName.matchedPrefixes(packagePrefixes, ps.getPackageName()) && num > 0) { packageCount++; ncss += ps.size(); classCount += num;
public void purgeClassStats() { hasClassStats = false; if (totalClassesFromPackageStats == 0) { totalClassesFromPackageStats = totalClasses; } if (totalSizeFromPackageStats == 0) { totalSizeFromPackageStats = totalSize; } for (PackageStats ps : getPackageStats()) { ps.getClassStats().clear(); } }
public void purgeClassesThatDontMatch(Pattern classPattern) { if (hasClassStats) { for (Iterator<Map.Entry<String, PackageStats>> i = packageStatsMap.entrySet().iterator(); i.hasNext();) { Map.Entry<String, PackageStats> e = i.next(); PackageStats stats = e.getValue(); stats.purgeClassesThatDontMatch(classPattern); if (stats.getClassStats().isEmpty()) { i.remove(); } } } else if (hasPackageStats) { boolean matchAny = false; for (String packageName : packageStatsMap.keySet()) { Matcher m = classPattern.matcher(packageName); if (m.lookingAt()) { matchAny = true; break; } } if (matchAny) { for (Iterator<String> i = packageStatsMap.keySet().iterator(); i.hasNext();) { String packageName = i.next(); Matcher m = classPattern.matcher(packageName); if (!m.lookingAt()) { i.remove(); } } } } }
String prefix = ClassName.extractPackagePrefix(ps.getPackageName(), prefixLength); ncss.put(prefix, ps.size()); } else { ncss.put(prefix, v + ps.size());
public void addClass(String name, String sourceFile, boolean isInterface, int size) { addClass(name, sourceFile, isInterface, size, true); }
public void recomputeFromClassStats() { super.clearBugCounts(); size = 0; numClasses = packageMembers.size(); ensureNonnullBugCounts(); for (ClassStats classStats : packageMembers.values()) { for (int i = 0; i < nBugs.length; i++) { nBugs[i] += classStats.getBugsAtPriority(i); } size += classStats.size; } }
private PackageStats getPackageStats(String packageName) { PackageStats stat = packageStatsMap.get(packageName); if (stat == null) { stat = new PackageStats(packageName); packageStatsMap.put(packageName, stat); } return stat; }
/** * Clear bug counts */ public void clearBugCounts() { for (int i = 0; i < totalErrors.length; i++) { totalErrors[i] = 0; } for (PackageStats stats : packageStatsMap.values()) { stats.clearBugCounts(); } }
/** * Report that a class has been analyzed. * * @param className * the full name of the class */ public @CheckForNull ClassStats getClassStats(@DottedClassName String className) { if (hasClassStats) { return null; } String packageName; int lastDot = className.lastIndexOf('.'); if (lastDot < 0) { packageName = ""; } else { packageName = className.substring(0, lastDot); } PackageStats stat = getPackageStats(packageName); return stat.getClassStatsOrNull(className); }
public void generateTreeMap(BugCollection bugCollection) { for (PackageStats p : bugCollection.getProjectStats().getPackageStats()) { if (p.getTotalBugs() > 0) { buggyPackages.add(p.getPackageName()); addInteriorPackages(p.getPackageName()); if (p.getTotalBugs() == 0) { cleanCode(p.getPackageName(), p.size(), p.getClassStats().size()); System.out.println("INTEGER\tINTEGER\tINTEGER\tINTEGER\tFLOAT"); for (PackageStats p : bugCollection.getProjectStats().getPackageStats()) { if (p.getTotalBugs() > 0) { int high = p.getBugsAtPriority(Priorities.HIGH_PRIORITY); int normal = p.getBugsAtPriority(Priorities.NORMAL_PRIORITY); System.out.printf("%d\t%d\t%d\t%d\t%g\t\t%s", p.size(), p.getClassStats().size(), high, high + normal, (high + normal) * 1000.0 / p.size(), p.getPackageName().substring(11).replace('.', '\t')); if (isInteriorPackage(p.getPackageName())) { System.out.print("\t*");
public void recomputeFromComponents() { if (!hasClassStats && !hasPackageStats) { return; } for (int i = 0; i < totalErrors.length; i++) { totalErrors[i] = 0; } totalSize = 0; totalClasses = 0; totalSizeFromPackageStats = 0; totalClassesFromPackageStats = 0; for (PackageStats stats : packageStatsMap.values()) { if (hasClassStats) { stats.recomputeFromClassStats(); } totalSize += stats.size(); totalClasses += stats.getNumClasses(); for (int i = 0; i < totalErrors.length; i++) { totalErrors[i] += stats.getBugsAtPriority(i); } } }
stats.getCodeSize()); for (PackageStats p : stats.getPackageStats()) { if (p.getTotalBugs() > 4) { double packageDensity = density(p.getTotalBugs(), p.size()); if (Double.isNaN(packageDensity) || packageDensity < projectDensity) { continue; printRow("package", p.getPackageName(), packageDensity, p.getTotalBugs(), p.size()); for (ClassStats c : p.getSortedClassStats()) { if (c.getTotalBugs() > 4) { double density = density(c.getTotalBugs(), c.size());
HashSet<String> sourceFilesInCollection(BugCollection collection) { HashSet<String> result = new HashSet<>(); for (PackageStats pStats : collection.getProjectStats().getPackageStats()) { for (ClassStats cStats : pStats.getClassStats()) { result.add(cStats.getSourceFile()); } } return result; }
public void purgeClassesThatDontMatch(Pattern classPattern) { if (hasClassStats) { for (Iterator<Map.Entry<String, PackageStats>> i = packageStatsMap.entrySet().iterator(); i.hasNext();) { Map.Entry<String, PackageStats> e = i.next(); PackageStats stats = e.getValue(); stats.purgeClassesThatDontMatch(classPattern); if (stats.getClassStats().isEmpty()) { i.remove(); } } } else if (hasPackageStats) { boolean matchAny = false; for (String packageName : packageStatsMap.keySet()) { Matcher m = classPattern.matcher(packageName); if (m.lookingAt()) { matchAny = true; break; } } if (matchAny) { for (Iterator<String> i = packageStatsMap.keySet().iterator(); i.hasNext();) { String packageName = i.next(); Matcher m = classPattern.matcher(packageName); if (!m.lookingAt()) { i.remove(); } } } } }