1 20 package edu.umd.cs.findbugs.detect; 21 22 import org.apache.bcel.classfile.Field; 23 import org.apache.bcel.classfile.JavaClass; 24 25 import edu.umd.cs.findbugs.BugInstance; 26 import edu.umd.cs.findbugs.BugReporter; 27 import edu.umd.cs.findbugs.Detector; 28 import edu.umd.cs.findbugs.FieldAnnotation; 29 import edu.umd.cs.findbugs.StatelessDetector; 30 import edu.umd.cs.findbugs.ba.ClassContext; 31 import edu.umd.cs.findbugs.visitclass.PreorderVisitor; 32 33 public class ConfusedInheritance extends PreorderVisitor implements Detector { 34 35 private BugReporter bugReporter; 36 private JavaClass cls; 37 38 public ConfusedInheritance(BugReporter bugReporter) { 39 this.bugReporter = bugReporter; 40 } 41 42 43 44 public void visitClassContext(ClassContext classContext) { 45 cls = classContext.getJavaClass(); 46 if (cls.isFinal()) { 47 cls.accept(this); 48 } 49 } 50 51 @Override 52 public void visitField(Field obj) { 53 if (obj.isProtected()) { 54 bugReporter.reportBug( 55 new BugInstance( this, "CI_CONFUSED_INHERITANCE", LOW_PRIORITY) 56 .addClass(cls) 57 .addField( 58 new FieldAnnotation(cls.getClassName(), obj.getName(), obj.getSignature(), obj.isStatic()))); 59 } 60 } 61 62 public void report() { 63 } 64 } 65 | Popular Tags |