Examples of ClassData


Examples of edu.umd.cs.findbugs.classfile.analysis.ClassData

    public boolean isTooBig(ClassDescriptor desc) {
        IAnalysisCache analysisCache = Global.getAnalysisCache();

        try {
            ClassContext classContext = analysisCache.getClassAnalysis(ClassContext.class, desc);
            ClassData classData = analysisCache.getClassAnalysis(ClassData.class, desc);
            if (classData.getData().length > 1000000) {
                return true;
            }
            try {
                JavaClass javaClass = classContext.getJavaClass();
                if (javaClass.getMethods().length > 1000) {
                    return true;
                }
            } catch (RuntimeException e) {
                AnalysisContext.logError("Error parsing class " + desc
                        + " from " + classData.getCodeBaseEntry().getCodeBase(), e);
                return true;
            }

        } catch (RuntimeException e) {
            AnalysisContext.logError("Error getting class data for " + desc, e);
View Full Code Here

Examples of edu.umd.cs.findbugs.classfile.analysis.ClassData

     * .classfile.IAnalysisCache, java.lang.Object)
     */
    @Override
    public JavaClass analyze(IAnalysisCache analysisCache, ClassDescriptor descriptor) throws CheckedAnalysisException {
        try {
            ClassData classData = analysisCache.getClassAnalysis(ClassData.class, descriptor);
            JavaClass javaClass = new ClassParser(classData.getInputStream(), descriptor.toResourceName()).parse();

            // Make sure that the JavaClass object knows the repository
            // it was loaded from.
            javaClass.setRepository(Repository.getRepository());

View Full Code Here

Examples of edu.umd.cs.findbugs.classfile.analysis.ClassData

     * .classfile.IAnalysisCache, java.lang.Object)
     */
    @Override
    public FBClassReader analyze(IAnalysisCache analysisCache, ClassDescriptor descriptor) throws CheckedAnalysisException {

        ClassData classData = analysisCache.getClassAnalysis(ClassData.class, descriptor);

        FBClassReader classReader = new FBClassReader(classData.getData());

        return classReader;
    }
View Full Code Here

Examples of edu.umd.cs.findbugs.classfile.analysis.ClassData

     */
    @Override
    public ClassNameAndSuperclassInfo analyze(IAnalysisCache analysisCache, ClassDescriptor descriptor)
            throws CheckedAnalysisException {
        // Get InputStream reading from class data
        ClassData classData = analysisCache.getClassAnalysis(ClassData.class, descriptor);
        DataInputStream classDataIn = new DataInputStream(new ByteArrayInputStream(classData.getData()));

        // Read the class info
        ClassParserInterface parser = new ClassParser(classDataIn, descriptor, classData.getCodeBaseEntry());
        ClassNameAndSuperclassInfo.Builder classInfoBuilder = new ClassNameAndSuperclassInfo.Builder();
        parser.parse(classInfoBuilder);
        ClassNameAndSuperclassInfo classInfo = classInfoBuilder.build();

        if (!classInfo.getClassDescriptor().equals(descriptor)) {
            throw new ClassNameMismatchException(descriptor, classInfo.getClassDescriptor(), classData.getCodeBaseEntry());
        }
        return classInfo;
    }
View Full Code Here

Examples of edu.umd.cs.findbugs.classfile.analysis.ClassData

    public ClassInfo analyze(IAnalysisCache analysisCache, ClassDescriptor descriptor) throws CheckedAnalysisException {

        if (descriptor instanceof ClassInfo) {
            return (ClassInfo) descriptor;
        }
        ClassData classData;
        try {
            classData = analysisCache.getClassAnalysis(ClassData.class, descriptor);
        } catch (edu.umd.cs.findbugs.classfile.MissingClassException e) {
            if (!descriptor.getSimpleName().equals("package-info")) {
                throw e;
            }

            ClassInfo.Builder builder = new ClassInfo.Builder();
            builder.setClassDescriptor(descriptor);
            builder.setAccessFlags(1536);
            return builder.build();
        }

        // Read the class info

        FBClassReader reader = analysisCache.getClassAnalysis(FBClassReader.class, descriptor);
        ClassParserInterface parser = new ClassParserUsingASM(reader, descriptor, classData.getCodeBaseEntry());

        ClassInfo.Builder classInfoBuilder = new ClassInfo.Builder();
        parser.parse(classInfoBuilder);
        ClassInfo classInfo = classInfoBuilder.build();

        if (!classInfo.getClassDescriptor().equals(descriptor)) {
            throw new ClassNameMismatchException(descriptor, classInfo.getClassDescriptor(), classData.getCodeBaseEntry());
        }
        return classInfo;
    }
View Full Code Here

Examples of edu.umd.cs.findbugs.classfile.analysis.ClassData

            } catch (IOException e) {
                throw new MissingClassException(descriptor, e);
            }
        }
        return new ClassData(descriptor, codeBaseEntry, data);
    }
View Full Code Here

Examples of edu.umd.cs.findbugs.classfile.analysis.ClassData

        return (Class<A>) validatorLoader.loadClass(typeQualifier.getDottedClassName());
    }

    static byte[] loadClassData(String name) throws CheckedAnalysisException {
        ClassDescriptor d = DescriptorFactory.createClassDescriptorFromDottedClassName(name);
        ClassData data = Global.getAnalysisCache().getClassAnalysis(ClassData.class, d);
        return data.getData();
    }
View Full Code Here

Examples of edu.umd.cs.findbugs.classfile.analysis.ClassData

        for (Entry<ClassDescriptor, Object> entry : entrySet) {
            data.classCount ++;
            if(!(entry.getValue() instanceof ClassData)) {
                continue;
            }
            ClassData cd = (ClassData) entry.getValue();
            data.byteSize += cd.getData().length;
        }
        Set<Entry<String, ICodeBaseEntry>> entrySet2 = classPath.getApplicationCodebaseEntries().entrySet();
        DescriptorFactory descriptorFactory = DescriptorFactory.instance();
        for (Entry<String, ICodeBaseEntry> entry : entrySet2) {
            String className = entry.getKey();
View Full Code Here

Examples of net.sourceforge.cobertura.coveragedata.ClassData

    Set<String> classNames(ProjectData data) {
        LinkedHashSet<String> result = new LinkedHashSet<String>();
        if (data != null) {
            for (Object o : data.getClasses()) {

                ClassData cd = (ClassData) o;
                result.add(cd.getName());
            }
        }
        return result;
    }
View Full Code Here

Examples of net.sourceforge.cobertura.coveragedata.ClassData

        }
        return result;
    }

    ClassData diffClasses(ClassData larger, ClassData smaller) {
        ClassData result = new ClassData(larger.getName());
        for (Object o : larger.getLines()) {
            LineData lld = (LineData) o;
            long afterHits = lld.getHits();
            long prevHits = 0;
            long prevConditions = 0;
            if (smaller != null) {
                LineData sld = smaller.getLineCoverage(lld.getLineNumber());
                if (sld != null) {
                    prevHits = sld.getHits();
                    prevConditions = sld.getConditionSize();
                }
            }
            int diffHits = (int) (afterHits - prevHits);
            result.addLine(lld.getLineNumber(), lld.getMethodName(),
                    lld.getMethodDescriptor());
            if (diffHits > 0) {
                result.touch(lld.getLineNumber(), diffHits);
            }
            if (diffHits < 0) {
                errors.add("Coverage decreased on line " + lld.getLineNumber()
                        + " of " + larger.getName());
            }
            if (prevConditions > lld.getConditionSize()) {
                errors.add("Jump or Switch disappeared on line "
                        + lld.getLineNumber() + " of " + larger.getName());
            }
            for (int i = 0; i < lld.getConditionSize(); i++) {
                Object cd = lld.getConditionData(i);
                if (cd instanceof JumpData) {
                    JumpData ljd = (JumpData) cd;
                    result.addLineJump(lld.getLineNumber(), i);
                    long prevTrue = 0;
                    long prevFalse = 0;
                    if (smaller != null) {
                        LineData sld = smaller.getLineCoverage(lld
                                .getLineNumber());
                        if (sld != null) {
                            JumpData sjd = (JumpData) sld.getConditionData(i);
                            if (sjd != null) {
                                prevTrue = sjd.getTrueHits();
                                prevFalse = sjd.getFalseHits();
                            } else {
                                errors.add("Somehow, JumpData null at condition "
                                        + i + " on line " + lld.getLineNumber());
                            }
                        }

                    }
                    long diffTrueHits = ljd.getTrueHits() - prevTrue;
                    long diffFalseHits = ljd.getFalseHits() - prevFalse;
                    if (diffTrueHits > 0) {
                        result.touchJump(lld.getLineNumber(), i, true,
                                (int) diffTrueHits);
                    }
                    if (diffFalseHits > 0) {
                        result.touchJump(lld.getLineNumber(), i, false,
                                (int) diffFalseHits);
                    }
                    if (diffFalseHits < 0 || diffTrueHits < 0) {
                        errors.add("Jump coverage on " + result.getName() + ":"
                                + lld.getLineNumber() + ":" + i + " decreased:"
                                + "true from " + prevTrue + " by "
                                + diffTrueHits + ", false from " + prevFalse
                                + " by " + diffFalseHits);
                    }
                } else if (cd instanceof SwitchData) {
                    SwitchData lsd = (SwitchData) cd;
                    result.addLineSwitch(lld.getLineNumber(), i, 0, 0, lsd.getMaxBranches());
                    long[] prevBranchHits = new long[lsd
                            .getNumberOfValidBranches() - 1];
                    long prevDefaultHits = 0;
                    if (smaller != null) {
                        LineData sld = smaller.getLineCoverage(lld
                                .getLineNumber());
                        if (sld != null) {
                            SwitchData ssd = (SwitchData) sld
                                    .getConditionData(i);
                            if (ssd != null) {
                                for (int j = 0; j < prevBranchHits.length; j++) {
                                    // returns -1 on an error condition.
                                    // probably never happens in normal
                                    // situation, but does in unit test.
                                    prevBranchHits[j] = Math.max(0,
                                            ssd.getHits(j));
                                }
                                prevDefaultHits = ssd.getDefaultHits();
                            }
                        }
                    }
                    for (int j = 0; j < prevBranchHits.length; j++) {
                        long diffBranchHits = lsd.getHits(j)
                                - prevBranchHits[j];
                        result.touchSwitch(lld.getLineNumber(), i, j,
                                (int) diffBranchHits);
                        if (diffBranchHits < 0) {
                            errors.add("Switch coverage " + i + "," + j
                                    + " on line " + lld.getLineNumber()
                                    + " decreased.");
                        }
                    }
                    long diffDefaultHits = lsd.getDefaultHits()
                            - prevDefaultHits;
                    if (diffDefaultHits > 0) {
                        result.touchSwitch(lld.getLineNumber(), i, -1,
                                (int) diffDefaultHits);
                    }
                    if (diffDefaultHits < 0) {
                        errors.add("Switch coverage " + i + ",default on line "
                                + lld.getLineNumber() + " decreased.");
                    }
                }
            }
        }
        Set<Integer> largerLines = lineNumbers(larger);
        Set<Integer> smallerLines = lineNumbers(smaller);
        smallerLines.removeAll(largerLines);
        if (smallerLines.size() > 0) {
            errors.add("Line(s) disappeared from class " + larger.getName()
                    + ": " + smallerLines);
        }

        // This arabesque accommodates .groovy files, and I suppose any others
        // that follow the java package/directory convention.
        int iName = larger.getSourceFileName().lastIndexOf("/");
        String sfName = larger.getSourceFileName().substring(iName + 1,
                larger.getSourceFileName().length());
        result.setSourceFileName(sfName);

        return result;
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.