Package edu.umd.cs.findbugs

Examples of edu.umd.cs.findbugs.BugInstance


        if (staticMethod && seen == PUTSTATIC && MutableStaticFields.mutableSignature(getSigConstantOperand())) {
            OpcodeStack.Item top = stack.getStackItem(0);
            if (isPotentialCapture(top)) {
                bugAccumulator.accumulateBug(
                        new BugInstance(this, "EI_EXPOSE_STATIC_REP2", NORMAL_PRIORITY)
                        .addClassAndMethod(this)
                        .addReferencedField(this)
                        .add(LocalVariableAnnotation.getLocalVariableAnnotation(getMethod(), top.getRegisterNumber(),
                                getPC(), getPC() - 1)), this);
            }
        }
        if (!staticMethod && seen == PUTFIELD && MutableStaticFields.mutableSignature(getSigConstantOperand())) {
            OpcodeStack.Item top = stack.getStackItem(0);
            OpcodeStack.Item target = stack.getStackItem(1);
            if (isPotentialCapture(top) && target.getRegisterNumber() == 0) {
                bugAccumulator.accumulateBug(
                        new BugInstance(this, "EI_EXPOSE_REP2", NORMAL_PRIORITY)
                        .addClassAndMethod(this)
                        .addReferencedField(this)
                        .add(LocalVariableAnnotation.getLocalVariableAnnotation(getMethod(), top.getRegisterNumber(),
                                getPC(), getPC() - 1)), this);
            }
        }

        if (seen == ALOAD_0 && !staticMethod) {
            thisOnTOS = true;
            fieldOnTOS = false;
            return;
        }

        if (thisOnTOS && seen == GETFIELD && getClassConstantOperand().equals(getClassName())
                && !AnalysisContext.currentXFactory().isEmptyArrayField(getXFieldOperand())) {
            fieldOnTOS = true;
            thisOnTOS = false;
            nameOnStack = getNameConstantOperand();
            classNameOnStack = getDottedClassConstantOperand();
            sigOnStack = getSigConstantOperand();
            fieldIsStatic = false;
            return;
        }
        if (seen == GETSTATIC && getClassConstantOperand().equals(getClassName())
                && !AnalysisContext.currentXFactory().isEmptyArrayField(getXFieldOperand())) {
            fieldOnTOS = true;
            thisOnTOS = false;
            nameOnStack = getNameConstantOperand();
            classNameOnStack = getDottedClassConstantOperand();
            sigOnStack = getSigConstantOperand();
            fieldIsStatic = true;

            return;
        }
        thisOnTOS = false;
        if (check && fieldOnTOS && seen == ARETURN
                /*
                 * && !sigOnStack.equals("Ljava/lang/String;") &&
                 * sigOnStack.indexOf("Exception") == -1 && sigOnStack.indexOf("[") >= 0
                 */
                && nameOnStack.indexOf("EMPTY") == -1 && MutableStaticFields.mutableSignature(sigOnStack)) {
            bugAccumulator.accumulateBug(new BugInstance(this, staticMethod ? "MS_EXPOSE_REP" : "EI_EXPOSE_REP", NORMAL_PRIORITY)
            .addClassAndMethod(this).addField(classNameOnStack, nameOnStack, sigOnStack, fieldIsStatic), this);
        }

        fieldOnTOS = false;
        thisOnTOS = false;
View Full Code Here


                    } else {
                        // opposite checks
                        priority += 2;
                    }

                    BugInstance bug = new BugInstance(this, "RpC_REPEATED_CONDITIONAL_TEST", priority).addClassAndMethod(this)
                            .add(firstSourceLine).add(secondSourceLine);
                    bugReporter.reportBug(bug);
                }
            }
        emptyStackLocations.add(getPC());
View Full Code Here

        String calledMethodSig = getSigConstantOperand();
        if (!sawOpenInAppendMode) {
            if (calledClassName.equals("java/io/ObjectOutputStream") && calledMethodName.equals("<init>")
                    && calledMethodSig.equals("(Ljava/io/OutputStream;)V")
                    && stack.getStackItem(0).getSpecialKind() == OpcodeStack.Item.FILE_OPENED_IN_APPEND_MODE) {
                bugReporter.reportBug(new BugInstance(this, "IO_APPENDING_TO_OBJECT_OUTPUT_STREAM", Priorities.HIGH_PRIORITY)
                .addClassAndMethod(this).addSourceLine(this));
            }
            return;
        }
        if (calledClassName.equals("java/io/FileOutputStream") && calledMethodName.equals("<init>")
                && (calledMethodSig.equals("(Ljava/io/File;Z)V") || calledMethodSig.equals("(Ljava/lang/String;Z)V"))) {
            OpcodeStack.Item item = stack.getStackItem(0);
            Object value = item.getConstant();
            sawOpenInAppendMode = value instanceof Integer && ((Integer) value).intValue() == 1;
        } else if (!sawOpenInAppendMode) {
            return;
        } else if (calledClassName.equals("java/io/BufferedOutputStream") && calledMethodName.equals("<init>")
                && calledMethodSig.equals("(Ljava/io/OutputStream;)V")) {
            // do nothing

        } else if (calledClassName.equals("java/io/ObjectOutputStream") && calledMethodName.equals("<init>")
                && calledMethodSig.equals("(Ljava/io/OutputStream;)V")) {
            bugReporter.reportBug(new BugInstance(this, "IO_APPENDING_TO_OBJECT_OUTPUT_STREAM", Priorities.HIGH_PRIORITY)
            .addClassAndMethod(this).addSourceLine(this));
            sawOpenInAppendMode = false;
        } else {
            sawOpenInAppendMode = false;
        }
View Full Code Here

        }
        sawNoSuchElement = false;
        sawCall = false;
        super.visit(obj);
        if (!sawNoSuchElement) {
            BugInstance bug = new BugInstance(this, "IT_NO_SUCH_ELEMENT", sawCall ? LOW_PRIORITY : NORMAL_PRIORITY);
            bug.addClassAndMethod(this);
            bugReporter.reportBug(bug);
        }
    }
View Full Code Here

        }
        // Report the bug.
        InstructionHandle start = match.getLabeledInstruction("start");
        InstructionHandle end = match.getLabeledInstruction("end");
        String sourceFile = javaClass.getSourceFileName();
        bugReporter.reportBug(new BugInstance(this, sawGetStaticAfterPutStatic ? "LI_LAZY_INIT_UPDATE_STATIC"
                : "LI_LAZY_INIT_STATIC", priority).addClassAndMethod(methodGen, sourceFile).addField(xfield)
                .describe("FIELD_ON").addSourceLine(classContext, methodGen, sourceFile, start, end));
        reported.set(testInstructionHandle.getPosition());

    }
View Full Code Here

                            if (intentional || allAbstract(overrides)) {
                                break;
                            }
                            priority++;
                        }
                        BugInstance bug = new BugInstance(this, pattern, priority).addClass(m.getClassName()).addMethod(m)
                                .addClass(m2.getClassName()).describe(ClassAnnotation.SUPERCLASS_ROLE).addMethod(m2)
                                .describe(MethodAnnotation.METHOD_DID_YOU_MEAN_TO_OVERRIDE);
                        if (m3 != null) {
                            bug.addMethod(m3).describe(MethodAnnotation.METHOD_OVERRIDDEN);
                        }
                        propertySet.decorateBugInstance(bug);
                        bugReporter.reportBug(bug);
                    } else if (!m.getSignature().equals(m2.getSignature())
                            && removePackageNamesFromSignature(m.getSignature()).equals(
                                    removePackageNamesFromSignature(m2.getSignature()))) {
                        String pattern = intentional ? "NM_WRONG_PACKAGE_INTENTIONAL" : "NM_WRONG_PACKAGE";
                        Set<XMethod> overrides = Hierarchy2.findSuperMethods(m);
                        if (!overrides.isEmpty()) {
                            if (intentional || allAbstract(overrides)) {
                                break;
                            }
                            priority++;
                        }
                        Iterator<String> s = new SignatureParser(m.getSignature()).parameterSignatureIterator();
                        Iterator<String> s2 = new SignatureParser(m2.getSignature()).parameterSignatureIterator();
                        while (s.hasNext()) {
                            String p = s.next();
                            String p2 = s2.next();
                            if (!p.equals(p2)) {
                                BugInstance bug = new BugInstance(this, pattern, priority).addClass(m.getClassName())
                                        .addMethod(m).addClass(m2.getClassName()).describe(ClassAnnotation.SUPERCLASS_ROLE)
                                        .addMethod(m2).describe(MethodAnnotation.METHOD_DID_YOU_MEAN_TO_OVERRIDE)
                                        .addFoundAndExpectedType(p, p2);
                                if (m3 != null) {
                                    bug.addMethod(m3).describe(MethodAnnotation.METHOD_OVERRIDDEN);
                                }
                                propertySet.decorateBugInstance(bug);
                                bugReporter.reportBug(bug);

                            }
View Full Code Here

                    mm2 = m2;
                } else {
                    mm1 = m2;
                    mm2 = m;
                }
                bugReporter.reportBug(new BugInstance(this, "NM_CONFUSING", LOW_PRIORITY).addClass(mm1.getClassName())
                        .addMethod(mm1).addClass(mm2.getClassName()).addMethod(mm2));
                return true;
            }
        }
        return false;
View Full Code Here

        }

        String superClassName = obj.getSuperclassName();
        if (!name.equals("java.lang.Object")) {
            if (sameSimpleName(superClassName, name)) {
                bugReporter.reportBug(new BugInstance(this, "NM_SAME_SIMPLE_NAME_AS_SUPERCLASS", HIGH_PRIORITY).addClass(name)
                        .addClass(superClassName));
            }
            for (String interfaceName : obj.getInterfaceNames()) {
                if (sameSimpleName(interfaceName, name)) {
                    bugReporter.reportBug(new BugInstance(this, "NM_SAME_SIMPLE_NAME_AS_INTERFACE", NORMAL_PRIORITY).addClass(
                            name).addClass(interfaceName));
                }
            }
        }
        if (obj.isInterface()) {
View Full Code Here

        classIsPublicOrProtected = obj.isPublic() || obj.isProtected();
        if (Character.isLetter(baseClassName.charAt(0)) && !Character.isUpperCase(baseClassName.charAt(0))
                && baseClassName.indexOf('_') == -1) {
            int priority = classIsPublicOrProtected ? NORMAL_PRIORITY : LOW_PRIORITY;

            bugReporter.reportBug(new BugInstance(this, "NM_CLASS_NAMING_CONVENTION", priority).addClass(this));
        }
        if (name.endsWith("Exception")) {
            // Does it ultimately inherit from Throwable?
            if (!mightInheritFromException(DescriptorFactory.createClassDescriptor(obj))) {
                // It doens't, so the name is misleading
                bugReporter.reportBug(new BugInstance(this, "NM_CLASS_NOT_EXCEPTION", NORMAL_PRIORITY).addClass(this));
            }
        }

        int badFieldNames = 0;
        for (Field f : obj.getFields()) {
View Full Code Here

                // messages from Eclipse NLS bundles
                return;
            }
        }
        if (badFieldName(obj)) {
            bugReporter.reportBug(new BugInstance(this, "NM_FIELD_NAMING_CONVENTION", classIsPublicOrProtected
                    && (obj.isPublic() || obj.isProtected()) && !hasBadFieldNames ? NORMAL_PRIORITY : LOW_PRIORITY)
            .addClass(this).addVisitedField(this));
        }
    }
View Full Code Here

TOP

Related Classes of edu.umd.cs.findbugs.BugInstance

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.