Package edu.umd.cs.findbugs.ba

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


    }

    private void registerParameterSources() {
        ValueNumberFrame vnaFrameAtEntry = vnaDataflow.getStartFact(cfg.getEntry());

        SignatureParser sigParser = new SignatureParser(xmethod.getSignature());
        int firstParamSlot = xmethod.isStatic() ? 0 : 1;

        int param = 0;
        int slotOffset = 0;

        for ( String paramSig : sigParser.parameterSignatures()) {

            // Get the TypeQualifierAnnotation for this parameter
            SourceSinkInfo info;
            TypeQualifierAnnotation tqa = TypeQualifierApplications.getEffectiveTypeQualifierAnnotation(xmethod, param,
                    typeQualifierValue);
View Full Code Here


    public static String transformMethodSignature(String signature) {
        StringBuilder buf = new StringBuilder();

        buf.append('(');

        SignatureParser parser = new SignatureParser(signature);
        for (Iterator<String> i = parser.parameterSignatureIterator(); i.hasNext();) {
            String param = i.next();
            param = transformSignature(param);
            buf.append(param);
        }
View Full Code Here

    /**
     * @param result
     * @param m
     */
    public static void addKnownTypeQualifiersForParameters(HashSet<? super TypeQualifierValue<?>> result, XMethod m) {
        int numParameters = new SignatureParser(m.getSignature()).getNumParameters();
        for (int p = 0; p < numParameters; p++) {
            addKnownTypeQualifiers(result, TypeQualifierApplications.getApplicableApplications(m, p));
        }
    }
View Full Code Here

    public Map<ValueNumber, Integer> getValueNumberToParamMap(String methodSignature, boolean isStatic) {
        HashMap<ValueNumber, Integer> valueNumberToParamMap = new HashMap<ValueNumber, Integer>();

        ValueNumberFrame frameAtEntry = getStartFact(getCFG().getEntry());

        int numParams = new SignatureParser(methodSignature).getNumParameters();
        int shift = isStatic ? 0 : 1;
        for (int i = 0; i < numParams; ++i) {
            valueNumberToParamMap.put(frameAtEntry.getValue(i + shift), i);
        }
View Full Code Here

     *            a method signature
     * @return the rewritten method signature
     */
    public static String rewriteMethodSignature(ClassNameRewriter classNameRewriter, String methodSignature) {
        if (classNameRewriter != IdentityClassNameRewriter.instance()) {
            SignatureParser parser = new SignatureParser(methodSignature);

            StringBuilder buf = new StringBuilder();

            buf.append('(');
            for (Iterator<String> i = parser.parameterSignatureIterator(); i.hasNext();) {
                buf.append(rewriteSignature(classNameRewriter, i.next()));
            }

            buf.append(')');
            buf.append(rewriteSignature(classNameRewriter, parser.getReturnTypeSignature()));

            methodSignature = buf.toString();
        }

        return methodSignature;
View Full Code Here

        }
        return false;
    }

    static boolean compatibleParameters(String signature, String superSignature) {
        SignatureParser sig = new SignatureParser(signature);
        SignatureParser superSig = new SignatureParser(superSignature);
        if (sig.getNumParameters() == superSig.getNumParameters()) {
            Iterator<String> params = sig.parameterSignatureIterator();
            Iterator<String> superParams = superSig.parameterSignatureIterator();
            while (params.hasNext()) {
                String param = params.next();
                String superParam = superParams.next();
                if (areRelated(param, superParam)) {
                    continue;
                }
                return false;
            }
            String retSig = sig.getReturnTypeSignature();
            String superRetSig = superSig.getReturnTypeSignature();
            if (areRelated(retSig, superRetSig)) {
                // it is compatible
                return true;
            }
        }
View Full Code Here

            String invokedMethodName = invokedMethod.getName();
            String argSignature = invokedMethod.getSignature();
            argSignature = argSignature.substring(0, argSignature.indexOf(')') + 1);
            String call = invokedMethodName+argSignature;
            SignatureParser sigParser = new SignatureParser(inv.getSignature(cpg));

            Collection<Info> collection = callMap.get(call);
            if (!callMap.containsKey(call)) {
                continue;
            }
            for(Info info : collection) {
                Subtypes2 subtypes2 = AnalysisContext.currentAnalysisContext().getSubtypes2();
                if (DEBUG) {
                    System.out.println("at " + handle.getPosition() + " Checking call to " + info.interfaceForCall + " : " + invokedMethod);
                }
                try {
                    if (!subtypes2.isSubtype(invokedMethod.getClassDescriptor(), info.interfaceForCall)) {
                        continue;
                    }
                } catch (ClassNotFoundException e) {
                    if (info.interfaceForCall.getClassName().equals("java/util/Collection")
                            && invokedMethod.getClassName().equals("com.google.common.collect.Multiset")) {
                        assert true;
                        // we know this is OK without needing to find definition of Multiset
                    } else {
                        AnalysisContext.reportMissingClass(e);
                        continue;
                    }
                }

                boolean allMethod;

                int typeArgument;
                if (info.typeIndex >= 0) {
                    allMethod = false;
                    typeArgument = info.typeIndex;
                } else {
                    allMethod = true;
                    typeArgument = -(1+info.typeIndex);
                }
                int pos = info.argumentIndex;


                int lhsPos;
                if (inv instanceof INVOKESTATIC) {
                    lhsPos = sigParser.getSlotsFromTopOfStackForParameter(0);
                } else {
                    lhsPos = sigParser.getTotalArgumentSize();
                }

                int stackPos = sigParser.getSlotsFromTopOfStackForParameter(pos);

                TypeFrame frame = typeDataflow.getFactAtLocation(location);
                if (!frame.isValid()) {
                    // This basic block is probably dead
                    continue;
View Full Code Here

                    if (location.getHandle().getNext().getInstruction().getOpcode() == POP) {
                        break;
                    }
                    String sig = iins.getSignature(cpg);

                    SignatureParser parser = new SignatureParser(sig);
                    if (parser.getNumParameters() == 1
                            && ( booleanComparisonMethod(invoking&& sig.endsWith(";)Z") || comparatorMethod(invoking) && sig.endsWith(";)I"))) {
                        checkForSelfOperation(classContext, location, valueNumberDataflow, "COMPARISON", method, methodGen,
                                sourceFile);
                    }
View Full Code Here

        this.bugAccumulator = new BugAccumulator(bugReporter);
    }

    @Override
    public void visit(Code code) {
        SignatureParser sp = new SignatureParser(getMethodSig());
        // Check to see if the method has expected return type
        String returnSignature = sp.getReturnTypeSignature();
        if (!matchesReturnSignature(returnSignature)){
            return;
        }

        if (isExplicitlyNullable()){
View Full Code Here

            int localsThatAreParameters = PreorderVisitor.getNumberArguments(method.getSignature());
            int startIndex = 0;
            if (!method.isStatic()) {
                startIndex = 1;
            }
            SignatureParser parser = new SignatureParser(method.getSignature());
            Iterator<String> signatureIterator = parser.parameterSignatureIterator();
            for (int i = startIndex; i < localsThatAreParameters + startIndex; i++) {
                String sig = signatureIterator.next();
                if (!liveStoreSetAtEntry.get(i) && signature.equals(sig)) {
                    // parameter isn't live and signatures match
                    LocalVariableAnnotation potentialMatch = LocalVariableAnnotation.getLocalVariableAnnotation(method, i, 0, 0);
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.