Package com.mebigfatguy.fbcontrib.detect
Class Section508Compliance
java.lang.Object
edu.umd.cs.findbugs.visitclass.BetterVisitor
edu.umd.cs.findbugs.visitclass.PreorderVisitor
edu.umd.cs.findbugs.visitclass.AnnotationVisitor
edu.umd.cs.findbugs.visitclass.DismantleBytecode
edu.umd.cs.findbugs.BytecodeScanningDetector
com.mebigfatguy.fbcontrib.detect.Section508Compliance
- All Implemented Interfaces:
edu.umd.cs.findbugs.Detector,edu.umd.cs.findbugs.Priorities,org.apache.bcel.classfile.Visitor
@CustomUserValue
public class Section508Compliance
extends edu.umd.cs.findbugs.BytecodeScanningDetector
looks for interfaces that ignore 508 compliance, including not using
JLabel.setLabelFor, Using null layouts,
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static org.apache.bcel.classfile.JavaClassprivate final edu.umd.cs.findbugs.BugReporterprivate static ClassNotFoundExceptionprivate static org.apache.bcel.classfile.JavaClassprivate Set<edu.umd.cs.findbugs.ba.XField> private static org.apache.bcel.classfile.JavaClassprivate edu.umd.cs.findbugs.OpcodeStackprivate static org.apache.bcel.classfile.JavaClassFields inherited from class edu.umd.cs.findbugs.visitclass.DismantleBytecode
codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINTFields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY -
Constructor Summary
ConstructorsConstructorDescriptionSection508Compliance(edu.umd.cs.findbugs.BugReporter bugReporter) constructs a S508C detector given the reporter to report bugs on -
Method Summary
Modifier and TypeMethodDescriptionprivate voidlooks for calls to set a readable string that is generated from a static constant, as these strings are not translatable.private voidprocessNullLayouts(String className, String methodName) looks for containers where a null layout is installedprivate voidprocessSetColorOps(String methodName) looks for calls to set the color of components where the color isn't from UIManagerprivate voidprocessSetSizeOps(String methodName) looks for calls to setSize on components, rather than letting the layout manager set themvoidsawOpcode(int seen) implements the visitor to find 508 compliance concernsvoidvisitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext) implements the visitor to create and clear the stackvoidvisitCode(org.apache.bcel.classfile.Code obj) implements the visitor to reset the stackvoidvisitField(org.apache.bcel.classfile.Field obj) looks for fields that are JLabels and stores them in a setMethods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector
getClassContext, report, shouldVisitCodeMethods inherited from class edu.umd.cs.findbugs.visitclass.DismantleBytecode
afterOpcode, areOppositeBranches, atCatchBlock, beforeOpcode, getBranchFallThrough, getBranchOffset, getBranchTarget, getClassConstantOperand, getClassDescriptorOperand, getCodeByte, getConstantRefOperand, getDefaultSwitchOffset, getDottedClassConstantOperand, getFieldDescriptorOperand, getIntConstant, getLongConstant, getMaxPC, getMethodDescriptorOperand, getNameConstantOperand, getNextCodeByte, getNextOpcode, getNextPC, getOpcode, getPC, getPrevOpcode, getRefConstantOperand, getRefFieldIsStatic, getRegisterOperand, getSigConstantOperand, getStringConstantOperand, getSwitchLabels, getSwitchOffsets, getXClassOperand, getXFieldOperand, getXMethodOperand, isBranch, isMethodCall, isRegisterLoad, isRegisterStore, isRegisterStore, isReturn, isShift, isSwitch, isWideOpcode, printOpCode, sawBranchTo, sawClass, sawDouble, sawField, sawFloat, sawIMethod, sawInt, sawLong, sawMethod, sawRegister, sawString, visitMethods inherited from class edu.umd.cs.findbugs.visitclass.AnnotationVisitor
getAnnotationParameterAsEnum, getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotationMethods inherited from class edu.umd.cs.findbugs.visitclass.PreorderVisitor
amVisitingMainMethod, asUnsignedByte, doVisitMethod, getClassDescriptor, getClassName, getCode, getConstantPool, getDottedClassName, getDottedFieldSig, getDottedMethodSig, getDottedSuperclassName, getField, getFieldDescriptor, getFieldIsStatic, getFieldName, getFieldSig, getFullyQualifiedFieldName, getFullyQualifiedMethodName, getMethod, getMethodDescriptor, getMethodName, getMethodSig, getMethodVisitOrder, getNumberArguments, getNumberMethodArguments, getPackageName, getSizeOfSurroundingTryBlock, getSizeOfSurroundingTryBlock, getSourceFile, getStringFromIndex, getSuperclassName, getSurroundingCaughtExceptions, getSurroundingCaughtExceptions, getSurroundingCaughtExceptionTypes, getSurroundingTryBlock, getSurroundingTryBlock, getThisClass, getXClass, getXField, getXMethod, hasInterestingClass, hasInterestingMethod, isVisitMethodsInCallOrder, setupVisitorForClass, setVisitMethodsInCallOrder, shouldVisit, toString, visitAfter, visitAfter, visitAnnotationDefault, visitAnnotationEntry, visitBootstrapMethods, visitConstantInvokeDynamic, visitConstantMethodHandle, visitConstantMethodType, visitConstantModule, visitConstantPackage, visitConstantPool, visitEnclosingMethod, visitingField, visitingMethod, visitInnerClasses, visitJavaClass, visitLineNumberTable, visitLocalVariableTable, visitMethodParameters, visitParameterAnnotationEntry, visitStackMap, visitStackMapEntryMethods inherited from class edu.umd.cs.findbugs.visitclass.BetterVisitor
clone, report, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitMethod, visitSignature, visitSourceFile, visitSynthetic, visitUnknownMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.bcel.classfile.Visitor
visitConstantDynamic, visitMethodParameter, visitModule, visitModuleExports, visitModuleMainClass, visitModuleOpens, visitModulePackages, visitModuleProvides, visitModuleRequires, visitNestHost, visitNestMembers, visitRecord, visitRecordComponent, visitStackMapType
-
Field Details
-
windowClass
private static org.apache.bcel.classfile.JavaClass windowClass -
componentClass
private static org.apache.bcel.classfile.JavaClass componentClass -
jcomponentClass
private static org.apache.bcel.classfile.JavaClass jcomponentClass -
accessibleClass
private static org.apache.bcel.classfile.JavaClass accessibleClass -
clsNFException
-
displayTextMethods
-
bugReporter
private final edu.umd.cs.findbugs.BugReporter bugReporter -
stack
private edu.umd.cs.findbugs.OpcodeStack stack -
fieldLabels
-
localLabels
-
-
Constructor Details
-
Section508Compliance
public Section508Compliance(edu.umd.cs.findbugs.BugReporter bugReporter) constructs a S508C detector given the reporter to report bugs on- Parameters:
bugReporter- the sync of bug reports
-
-
Method Details
-
visitClassContext
public void visitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext) implements the visitor to create and clear the stack- Specified by:
visitClassContextin interfaceedu.umd.cs.findbugs.Detector- Overrides:
visitClassContextin classedu.umd.cs.findbugs.BytecodeScanningDetector- Parameters:
classContext- the context object of the currently visited class
-
visitField
public void visitField(org.apache.bcel.classfile.Field obj) looks for fields that are JLabels and stores them in a set- Specified by:
visitFieldin interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitFieldin classedu.umd.cs.findbugs.visitclass.BetterVisitor- Parameters:
obj- the field object of the current field
-
visitCode
public void visitCode(org.apache.bcel.classfile.Code obj) implements the visitor to reset the stack- Specified by:
visitCodein interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitCodein classedu.umd.cs.findbugs.visitclass.PreorderVisitor- Parameters:
obj- the context object for the currently visited code block
-
sawOpcode
public void sawOpcode(int seen) implements the visitor to find 508 compliance concerns- Overrides:
sawOpcodein classedu.umd.cs.findbugs.visitclass.DismantleBytecode- Parameters:
seen- the opcode of the currently parsed instruction
-
processFaultyGuiStrings
private void processFaultyGuiStrings()looks for calls to set a readable string that is generated from a static constant, as these strings are not translatable. also looks for setting readable strings that are appended together. This is likely not to be internationalizable. -
processNullLayouts
looks for containers where a null layout is installed- Parameters:
className- class that a method call is made onmethodName- name of the method that is called
-
processSetColorOps
looks for calls to set the color of components where the color isn't from UIManager- Parameters:
methodName- the method that is called- Throws:
ClassNotFoundException- if the gui component class can't be found
-
processSetSizeOps
looks for calls to setSize on components, rather than letting the layout manager set them- Parameters:
methodName- the method that was called on a component- Throws:
ClassNotFoundException- if the gui class wasn't found
-