public JarClasses analyze()

in src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java [92:156]


    public JarClasses analyze(JarAnalyzer jarAnalyzer) {
        JarClasses classes = jarAnalyzer.getJarData().getJarClasses();
        if (classes == null) {
            String jarfilename = jarAnalyzer.getFile().getAbsolutePath();
            classes = new JarClasses();

            List<JarEntry> classList = jarAnalyzer.getClassEntries();

            classes.setDebugPresent(false);

            double maxVersion = 0.0;

            for (JarEntry entry : classList) {
                String classname = entry.getName();

                try {
                    ClassParser classParser = new ClassParser(jarfilename, classname);

                    JavaClass javaClass = classParser.parse();

                    String classSignature = javaClass.getClassName();

                    if (!classes.isDebugPresent()) {
                        if (hasDebugSymbols(javaClass)) {
                            classes.setDebugPresent(true);
                        }
                    }

                    double classVersion = javaClass.getMajor();
                    if (javaClass.getMinor() > 0) {
                        classVersion = classVersion + javaClass.getMinor() / 10.0;
                    }

                    if (classVersion > maxVersion) {
                        maxVersion = classVersion;
                    }

                    Method[] methods = javaClass.getMethods();
                    for (Method method : methods) {
                        classes.addMethod(classSignature + "." + method.getName() + method.getSignature());
                    }

                    String classPackageName = javaClass.getPackageName();

                    classes.addClassName(classSignature);
                    classes.addPackage(classPackageName);

                    ImportVisitor importVisitor = new ImportVisitor(javaClass);
                    DescendingVisitor descVisitor = new DescendingVisitor(javaClass, importVisitor);
                    javaClass.accept(descVisitor);

                    classes.addImports(importVisitor.getImports());
                } catch (ClassFormatException e) {
                    logger.warn("Unable to process class " + classname + " in JarAnalyzer File " + jarfilename, e);
                } catch (IOException e) {
                    logger.warn("Unable to process JarAnalyzer File " + jarfilename, e);
                }
            }

            Optional.ofNullable(JAVA_CLASS_VERSIONS.get(maxVersion)).ifPresent(classes::setJdkRevision);

            jarAnalyzer.getJarData().setJarClasses(classes);
        }
        return classes;
    }