Package edu.umd.cs.findbugs.ba

Examples of edu.umd.cs.findbugs.ba.SignatureParser


            if (isAccessMethod && accessOwner != null) {
                if (!accessForField && methodCallCount == 1) {
                    mBuilder.setAccessMethodForMethod(accessOwner, accessName, accessDesc, accessIsStatic);
                } else if(accessForField && fieldInstructionCount == 1) {
                    boolean isSetter = methodDesc.endsWith(")V");
                    int numArg = new SignatureParser(methodDesc).getNumParameters();
                    int expected = 0;
                    if (!accessIsStatic) {
                        expected++;
                    }
                    if (isSetter) {
View Full Code Here


                            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())
View Full Code Here

        return getUnsupportedmethods().containsKey(this);
    }

    @Override
    public int getNumParams() {
        return new SignatureParser(getSignature()).getNumParameters();
    }
View Full Code Here

     *
     * @see edu.umd.cs.findbugs.ba.XMethod#isReturnTypeReferenceType()
     */
    @Override
    public boolean isReturnTypeReferenceType() {
        SignatureParser parser = new SignatureParser(getSignature());
        String returnTypeSig = parser.getReturnTypeSignature();
        return SignatureParser.isReferenceType(returnTypeSig);
    }
View Full Code Here

        this.fieldAnnotations = Util.immutableMap(fieldAnnotations);
        this.isResolved = isResolved;
    }

    public int getNumParams() {
        return new SignatureParser(getSignature()).getNumParameters();
    }
View Full Code Here

     *            a parameter (0 == first parameter)
     * @return the ValueNumber assigned to that parameter
     */
    public ValueNumber getEntryValueForParameter(int param) {

        SignatureParser sigParser = new SignatureParser(methodGen.getSignature());
        int p = 0;
        int slotOffset =  methodGen.isStatic() ? 0 : 1;

        for ( String paramSig : sigParser.parameterSignatures()) {
            if (p == param) {
                return getEntryValue(slotOffset);
            }
            param++;
            slotOffset += SignatureParser.getNumSlotsForType(paramSig);
View Full Code Here

            }
            return;
        }

        if (SystemProperties.ASSERTIONS_ENABLED) {
            SignatureParser parser = new SignatureParser(sig);
            int numParams = parser.getNumParameters();
            assert param < numParams;
        }


        // Destructively add the annotation to the MethodInfo object
View Full Code Here

    private void modelArguments(Location location) throws DataflowAnalysisException {
        // Model arguments to called method
        InvokeInstruction inv = (InvokeInstruction) location.getHandle().getInstruction();
        XMethod calledMethod = XFactory.createXMethod(inv, cpg);

        SignatureParser sigParser = new SignatureParser(calledMethod.getSignature());
        if (sigParser.getNumParameters() == 0) {
            return;
        }
        ValueNumberFrame vnaFrame = vnaDataflow.getFactAtLocation(location);

        if (!vnaFrame.isValid()) {
View Full Code Here

            return Collections.emptySet();
        }

        InvokeInstruction inv = (InvokeInstruction) location.getHandle().getInstruction();

        SignatureParser sigParser = new SignatureParser(inv.getSignature(constantPool));
        int numParams = sigParser.getNumParameters();
        if (numParams == 0 || !sigParser.hasReferenceParameters()) {
            return Collections.emptySet();
        }
        ParameterNullnessPropertyDatabase database = AnalysisContext.currentAnalysisContext()
                .getUnconditionalDerefParamDatabase();
        if (database == null) {
            if (DEBUG_CHECK_CALLS) {
                System.out.println("no database!");
            }
            return Collections.emptySet();
        }

        TypeFrame typeFrame = typeDataflow.getFactAtLocation(location);
        if (!typeFrame.isValid()) {
            if (DEBUG_CHECK_CALLS) {
                System.out.println("invalid type frame!");
            }
            return Collections.emptySet();
        }

        try {
            Set<XMethod> targetSet = Hierarchy2.resolveMethodCallTargets(inv, typeFrame, constantPool);

            if (targetSet.isEmpty()) {
                return Collections.emptySet();
            }

            if (DEBUG_CHECK_CALLS) {
                System.out.println("target set size: " + targetSet.size());
            }
            // Compute the intersection of all properties
            ParameterProperty derefParamSet = null;
            for (XMethod target : targetSet) {
                if (target.isStub()) {
                    continue;
                }
                if (DEBUG_CHECK_CALLS) {
                    System.out.print("Checking: " + target + ": ");
                }

                ParameterProperty targetDerefParamSet = database.getProperty(target.getMethodDescriptor());
                if (targetDerefParamSet == null) {
                    // Hmm...no information for this target.
                    // assume it doesn't dereference anything
                    if (DEBUG_CHECK_CALLS) {
                        System.out.println("==> no information, assume no guaranteed dereferences");
                    }
                    return Collections.emptySet();
                }

                if (DEBUG_CHECK_CALLS) {
                    System.out.println("==> " + targetDerefParamSet);
                }
                if (derefParamSet == null) {
                    derefParamSet = new ParameterProperty();
                    derefParamSet.copyFrom(targetDerefParamSet);
                } else {
                    derefParamSet.intersectWith(targetDerefParamSet);
                }
            }

            if (derefParamSet == null || derefParamSet.isEmpty()) {
                if (DEBUG) {
                    System.out.println("** Nothing");
                }
                return Collections.emptySet();
            }
            if (DEBUG_CHECK_CALLS) {
                System.out.println("** Summary of call @ " + location.getHandle().getPosition() + ": " + derefParamSet);
            }

            HashSet<ValueNumber> requiredToBeNonnull = new HashSet<ValueNumber>();
            for (int i = 0; i < numParams; i++) {
                if (!derefParamSet.hasProperty(i)) {
                    continue;
                }
                int argSlot = vnaFrame.getStackLocation(sigParser.getSlotsFromTopOfStackForParameter(i));
                if (invFrame != null && !reportDereference(invFrame, argSlot)) {
                    continue;
                }
                if (DEBUG_CHECK_CALLS) {
                    System.out.println("  dereference @ " + location.getHandle().getPosition() + " of parameter " + i);
View Full Code Here

        }
        INullnessAnnotationDatabase database = AnalysisContext.currentAnalysisContext().getNullnessAnnotationDatabase();

        InvokeInstruction inv = (InvokeInstruction) location.getHandle().getInstruction();
        XMethod called = XFactory.createXMethod(inv, constantPool);
        SignatureParser sigParser = new SignatureParser(called.getSignature());
        int numParams = sigParser.getNumParameters();

        Set<ValueNumber> result = new HashSet<ValueNumber>();
        Iterator<String> parameterIterator = sigParser.parameterSignatureIterator();
        for (int i = 0; i < numParams; i++) {
            String parameterSignature = parameterIterator.next();
            char firstChar = parameterSignature.charAt(0);
            if (firstChar != 'L' && firstChar != '[') {
                continue;
            }
            int offset = sigParser.getSlotsFromTopOfStackForParameter(i);
            if (invFrame != null) {
                int slot = invFrame.getStackLocation(offset);
                if (!reportDereference(invFrame, slot)) {
                    continue;
                }
View Full Code Here

TOP

Related Classes of edu.umd.cs.findbugs.ba.SignatureParser

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.