Package com.mebigfatguy.fbcontrib.detect
Class InconsistentKeyNameCasing
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.InconsistentKeyNameCasing
- All Implemented Interfaces:
edu.umd.cs.findbugs.Detector,edu.umd.cs.findbugs.Priorities,org.apache.bcel.classfile.Visitor
public class InconsistentKeyNameCasing
extends edu.umd.cs.findbugs.BytecodeScanningDetector
looks for calls to HttpRequest.getParameter with parameters of the same name
with different cases like 'id' and 'Id'.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static enum(package private) static classa holder for location information of a getParameter call -
Field Summary
FieldsModifier and TypeFieldDescription(package private) edu.umd.cs.findbugs.BugReporterprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate static final String(package private) Map<InconsistentKeyNameCasing.KeyType, Map<String, Map<String, List<InconsistentKeyNameCasing.SourceInfo>>>> private static final Stringprivate static final String(package private) edu.umd.cs.findbugs.OpcodeStackFields 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
ConstructorsConstructorDescriptionInconsistentKeyNameCasing(edu.umd.cs.findbugs.BugReporter reporter) constructs a IKNC detector given the reporter to report bugs on -
Method Summary
Modifier and TypeMethodDescriptionisKeyAccessMethod(int seen) looks to see if this method is a getAttribute/setAttribute on Session or getParameter on HttpServletRequestvoidreport()implements the visitor to look for the collected parm names, and look for duplicates that are different in casing only.voidsawOpcode(int seen) implements the visitor to look for calls to HttpServletRequest.getParameter and collect what the name of the key is.voidvisitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext) implements the visitor to create the opcode stackvoidvisitCode(org.apache.bcel.classfile.Code obj) implements the visitor to reset the opcode stack for a new methodMethods inherited from class edu.umd.cs.findbugs.BytecodeScanningDetector
getClassContext, 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, visitField, 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
-
JAVAX_HTTP_SESSION
- See Also:
-
JAKARTA_HTTP_SESSION
- See Also:
-
JAVAX_HTTP_SERVLET_REQUEST
- See Also:
-
JAKARTA_HTTP_SERVLET_REQUEST
- See Also:
-
GET_ATTRIBUTE
- See Also:
-
SET_ATTRIBUTE
- See Also:
-
GET_PARAMETER
- See Also:
-
GET_ATTRIBUTE_SIG
-
SET_ATTRIBUTE_SIG
-
GET_PARAMETER_SIG
-
bugReporter
edu.umd.cs.findbugs.BugReporter bugReporter -
stack
edu.umd.cs.findbugs.OpcodeStack stack -
parmInfo
-
-
Constructor Details
-
InconsistentKeyNameCasing
public InconsistentKeyNameCasing(edu.umd.cs.findbugs.BugReporter reporter) constructs a IKNC detector given the reporter to report bugs on- Parameters:
reporter- the sync of bug reports
-
-
Method Details
-
visitClassContext
public void visitClassContext(edu.umd.cs.findbugs.ba.ClassContext classContext) implements the visitor to create the opcode stack- Specified by:
visitClassContextin interfaceedu.umd.cs.findbugs.Detector- Overrides:
visitClassContextin classedu.umd.cs.findbugs.BytecodeScanningDetector- Parameters:
classContext- the context object of the currently parsed class
-
visitCode
public void visitCode(org.apache.bcel.classfile.Code obj) implements the visitor to reset the opcode stack for a new method- Specified by:
visitCodein interfaceorg.apache.bcel.classfile.Visitor- Overrides:
visitCodein classedu.umd.cs.findbugs.visitclass.PreorderVisitor- Parameters:
obj- the context object of the currently parsed code block
-
sawOpcode
public void sawOpcode(int seen) implements the visitor to look for calls to HttpServletRequest.getParameter and collect what the name of the key is.- Overrides:
sawOpcodein classedu.umd.cs.findbugs.visitclass.DismantleBytecode- Parameters:
seen- the opcode of the currently parsed instruction
-
report
public void report()implements the visitor to look for the collected parm names, and look for duplicates that are different in casing only.- Specified by:
reportin interfaceedu.umd.cs.findbugs.Detector- Overrides:
reportin classedu.umd.cs.findbugs.BytecodeScanningDetector
-
isKeyAccessMethod
looks to see if this method is a getAttribute/setAttribute on Session or getParameter on HttpServletRequest- Parameters:
seen- the currently parsed opcode- Returns:
- if it is one of these special methods
-