1 19 20 package edu.umd.cs.findbugs; 21 22 import java.util.Collection ; 23 import java.util.HashMap ; 24 import java.util.LinkedList ; 25 import java.util.Map ; 26 27 import edu.umd.cs.findbugs.filter.Matcher; 28 29 public class SuppressionMatcher implements Matcher { 30 private Map <ClassAnnotation, Collection <WarningSuppressor>> suppressedWarnings 31 = new HashMap <ClassAnnotation, Collection <WarningSuppressor>>(); 32 private Map <String , Collection <WarningSuppressor>> suppressedPackageWarnings 33 = new HashMap <String , Collection <WarningSuppressor>>(); 34 int count = 0; 35 36 public void addPackageSuppressor(PackageWarningSuppressor suppressor) { 37 String packageName = suppressor.getPackageName(); 38 39 Collection <WarningSuppressor> c = suppressedPackageWarnings.get(packageName); 40 if (c == null) { 41 c = new LinkedList <WarningSuppressor>(); 42 suppressedPackageWarnings.put(packageName,c); 43 } 44 c.add(suppressor); 45 } 46 47 public void addSuppressor(ClassWarningSuppressor suppressor) { 48 ClassAnnotation clazz = suppressor.getClassAnnotation().getTopLevelClass(); 49 Collection <WarningSuppressor> c = suppressedWarnings.get(clazz); 50 if (c == null) { 51 c = new LinkedList <WarningSuppressor>(); 52 suppressedWarnings.put(clazz,c); 53 } 54 c.add(suppressor); 55 } 56 public int count() { 57 return count; 58 } 59 public boolean match(BugInstance b) { 60 ClassAnnotation clazz = b.getPrimaryClass().getTopLevelClass(); 61 Collection <WarningSuppressor> c = suppressedWarnings.get(clazz); 62 if (c != null) 63 for(WarningSuppressor w : c) 64 if (w.match(b)) { 65 count++; 66 return true; 67 } 68 for(Collection <WarningSuppressor> c2 : suppressedPackageWarnings.values()) 69 for(WarningSuppressor w : c2) { 70 if (w.match(b)) { 71 count++; 72 return true; 73 } 74 } 75 return false; 76 } 77 78 79 } 80 81 | Popular Tags |