⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analyzer.html

📁 a a a a a a a a a a a a a a a a a a a a a a
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<FONT color="green">510</FONT>            if (Modifier.isStatic(modifiers)) {<a name="line.510"></a>
<FONT color="green">511</FONT>                if (verbose)<a name="line.511"></a>
<FONT color="green">512</FONT>                    System.err.println("Omitting \"" + constructor.toString() + "\".");<a name="line.512"></a>
<FONT color="green">513</FONT>                return false;<a name="line.513"></a>
<FONT color="green">514</FONT>            }<a name="line.514"></a>
<FONT color="green">515</FONT>            // discard constructors with $ in name<a name="line.515"></a>
<FONT color="green">516</FONT>            String name = constructor.getName();<a name="line.516"></a>
<FONT color="green">517</FONT>            if (name.indexOf('$') &gt;= 0) {<a name="line.517"></a>
<FONT color="green">518</FONT>                if (verbose)<a name="line.518"></a>
<FONT color="green">519</FONT>                    System.err.println("Omitting \"" + constructor.toString() + "\".");<a name="line.519"></a>
<FONT color="green">520</FONT>                return false;<a name="line.520"></a>
<FONT color="green">521</FONT>            }<a name="line.521"></a>
<FONT color="green">522</FONT>            // start constructor analysis<a name="line.522"></a>
<FONT color="green">523</FONT>            if (verbose)<a name="line.523"></a>
<FONT color="green">524</FONT>                System.err.println("Analyzing \"" + constructor.toString() + "\".");<a name="line.524"></a>
<FONT color="green">525</FONT>            analyzeTypes(constructor.getParameterTypes());<a name="line.525"></a>
<FONT color="green">526</FONT>            analyzeTypes(constructor.getExceptionTypes());<a name="line.526"></a>
<FONT color="green">527</FONT>            return true;<a name="line.527"></a>
<FONT color="green">528</FONT>        }<a name="line.528"></a>
<FONT color="green">529</FONT>    <a name="line.529"></a>
<FONT color="green">530</FONT>        private boolean analyzeMethod(Method method) {<a name="line.530"></a>
<FONT color="green">531</FONT>            // discard private methods<a name="line.531"></a>
<FONT color="green">532</FONT>            int modifiers = method.getModifiers();<a name="line.532"></a>
<FONT color="green">533</FONT>            if (Modifier.isPrivate(modifiers)) {<a name="line.533"></a>
<FONT color="green">534</FONT>                if (verbose)<a name="line.534"></a>
<FONT color="green">535</FONT>                    System.err.println("Omitting \"" + method.toString() + "\".");<a name="line.535"></a>
<FONT color="green">536</FONT>                return false;<a name="line.536"></a>
<FONT color="green">537</FONT>            }<a name="line.537"></a>
<FONT color="green">538</FONT>            // discard methods with $ in name<a name="line.538"></a>
<FONT color="green">539</FONT>            String name = method.getName();<a name="line.539"></a>
<FONT color="green">540</FONT>            if (name.indexOf('$') &gt;= 0) {<a name="line.540"></a>
<FONT color="green">541</FONT>                if (verbose)<a name="line.541"></a>
<FONT color="green">542</FONT>                    System.err.println("Omitting \"" + method.toString() + "\".");<a name="line.542"></a>
<FONT color="green">543</FONT>                return false;<a name="line.543"></a>
<FONT color="green">544</FONT>            }<a name="line.544"></a>
<FONT color="green">545</FONT>            // discard finalizer<a name="line.545"></a>
<FONT color="green">546</FONT>            Class result = method.getReturnType();<a name="line.546"></a>
<FONT color="green">547</FONT>            boolean proc = result.equals(void.class);<a name="line.547"></a>
<FONT color="green">548</FONT>            name = method.getName();<a name="line.548"></a>
<FONT color="green">549</FONT>            Class[] parameters = method.getParameterTypes();<a name="line.549"></a>
<FONT color="green">550</FONT>            if (proc &amp;&amp; parameters.length == 0 &amp;&amp; name.equals("finalize")) {<a name="line.550"></a>
<FONT color="green">551</FONT>                if (verbose)<a name="line.551"></a>
<FONT color="green">552</FONT>                    System.err.println("Omitting \"" + method.toString() + "\".");<a name="line.552"></a>
<FONT color="green">553</FONT>                return false;<a name="line.553"></a>
<FONT color="green">554</FONT>            }<a name="line.554"></a>
<FONT color="green">555</FONT>            // start method analysis<a name="line.555"></a>
<FONT color="green">556</FONT>            if (verbose)<a name="line.556"></a>
<FONT color="green">557</FONT>                System.err.println("Analyzing \"" + method.toString() + "\".");<a name="line.557"></a>
<FONT color="green">558</FONT>            if (!proc)<a name="line.558"></a>
<FONT color="green">559</FONT>                analyzeType(result);<a name="line.559"></a>
<FONT color="green">560</FONT>            analyzeTypes(parameters);<a name="line.560"></a>
<FONT color="green">561</FONT>            analyzeTypes(method.getExceptionTypes());<a name="line.561"></a>
<FONT color="green">562</FONT>            return true;<a name="line.562"></a>
<FONT color="green">563</FONT>        }<a name="line.563"></a>
<FONT color="green">564</FONT>    <a name="line.564"></a>
<FONT color="green">565</FONT>        private boolean analyzeField(Field field) {<a name="line.565"></a>
<FONT color="green">566</FONT>            // discard private fields<a name="line.566"></a>
<FONT color="green">567</FONT>            int modifiers = field.getModifiers();<a name="line.567"></a>
<FONT color="green">568</FONT>            if (Modifier.isPrivate(modifiers)) {<a name="line.568"></a>
<FONT color="green">569</FONT>                if (verbose)<a name="line.569"></a>
<FONT color="green">570</FONT>                    System.err.println("Omitting \"" + field.toString() + "\".");<a name="line.570"></a>
<FONT color="green">571</FONT>                return false;<a name="line.571"></a>
<FONT color="green">572</FONT>            }<a name="line.572"></a>
<FONT color="green">573</FONT>            // discard fields with $ in name<a name="line.573"></a>
<FONT color="green">574</FONT>            String name = field.getName();<a name="line.574"></a>
<FONT color="green">575</FONT>            if (name.indexOf('$') &gt;= 0) {<a name="line.575"></a>
<FONT color="green">576</FONT>                if (verbose)<a name="line.576"></a>
<FONT color="green">577</FONT>                    System.err.println("Omitting \"" + field.toString() + "\".");<a name="line.577"></a>
<FONT color="green">578</FONT>                return false;<a name="line.578"></a>
<FONT color="green">579</FONT>            }<a name="line.579"></a>
<FONT color="green">580</FONT>            // start field analysis<a name="line.580"></a>
<FONT color="green">581</FONT>            if (verbose)<a name="line.581"></a>
<FONT color="green">582</FONT>                System.err.println("Analyzing \"" + field.toString() + "\".");<a name="line.582"></a>
<FONT color="green">583</FONT>            analyzeType(field.getType());<a name="line.583"></a>
<FONT color="green">584</FONT>            return true;<a name="line.584"></a>
<FONT color="green">585</FONT>        }<a name="line.585"></a>
<FONT color="green">586</FONT>    <a name="line.586"></a>
<FONT color="green">587</FONT>        private boolean analyzeClass(Class clazz) {<a name="line.587"></a>
<FONT color="green">588</FONT>            // do not reprocess analyzed classes<a name="line.588"></a>
<FONT color="green">589</FONT>            if (isAnalyzed(clazz))<a name="line.589"></a>
<FONT color="green">590</FONT>                return true;<a name="line.590"></a>
<FONT color="green">591</FONT>            // discard primitive types<a name="line.591"></a>
<FONT color="green">592</FONT>            if (clazz.isPrimitive()) {<a name="line.592"></a>
<FONT color="green">593</FONT>                if (!quiet)<a name="line.593"></a>
<FONT color="green">594</FONT>                    System.err.println("Skipping \"" + clazz.toString() + "\".");<a name="line.594"></a>
<FONT color="green">595</FONT>                return false;<a name="line.595"></a>
<FONT color="green">596</FONT>            }<a name="line.596"></a>
<FONT color="green">597</FONT>            // discard non-filtered compounds<a name="line.597"></a>
<FONT color="green">598</FONT>            if (!hasFilteredScope(clazz.getName()))<a name="line.598"></a>
<FONT color="green">599</FONT>                return false;<a name="line.599"></a>
<FONT color="green">600</FONT>            // discard private compounds<a name="line.600"></a>
<FONT color="green">601</FONT>            if (Modifier.isPrivate(clazz.getModifiers())) {<a name="line.601"></a>
<FONT color="green">602</FONT>                if (!quiet)<a name="line.602"></a>
<FONT color="green">603</FONT>                    System.err.println("Skipping \"" + clazz.toString() + "\".");<a name="line.603"></a>
<FONT color="green">604</FONT>                return false;<a name="line.604"></a>
<FONT color="green">605</FONT>            }<a name="line.605"></a>
<FONT color="green">606</FONT>            // start compound analysis<a name="line.606"></a>
<FONT color="green">607</FONT>            if (verbose)<a name="line.607"></a>
<FONT color="green">608</FONT>                System.err.println("Analyzing \"" + clazz.toString() + "\".");<a name="line.608"></a>
<FONT color="green">609</FONT>            boolean isinterface = clazz.isInterface();<a name="line.609"></a>
<FONT color="green">610</FONT>            CompoundInfo info;<a name="line.610"></a>
<FONT color="green">611</FONT>            if (isinterface)<a name="line.611"></a>
<FONT color="green">612</FONT>                info = new InterfaceInfo(clazz);<a name="line.612"></a>
<FONT color="green">613</FONT>            else<a name="line.613"></a>
<FONT color="green">614</FONT>                info = new ClassInfo(clazz);<a name="line.614"></a>
<FONT color="green">615</FONT>            // process extended parent<a name="line.615"></a>
<FONT color="green">616</FONT>            Class parent;<a name="line.616"></a>
<FONT color="green">617</FONT>            if (isinterface)<a name="line.617"></a>
<FONT color="green">618</FONT>                parent = null;<a name="line.618"></a>
<FONT color="green">619</FONT>            else {<a name="line.619"></a>
<FONT color="green">620</FONT>                ((ClassInfo) info).parent = parent = clazz.getSuperclass();<a name="line.620"></a>
<FONT color="green">621</FONT>                if (parent != null)<a name="line.621"></a>
<FONT color="green">622</FONT>                    if (!analyzeClass(parent) &amp;&amp; scopes.length == 0)<a name="line.622"></a>
<FONT color="green">623</FONT>                        throw new IllegalStateException(<a name="line.623"></a>
<FONT color="green">624</FONT>                                "The parent \""<a name="line.624"></a>
<FONT color="green">625</FONT>                                        + parent.getName()<a name="line.625"></a>
<FONT color="green">626</FONT>                                        + "\" of the class \""<a name="line.626"></a>
<FONT color="green">627</FONT>                                        + clazz.getName()<a name="line.627"></a>
<FONT color="green">628</FONT>                                        + "\" was skipped. It is not supported, contact the maintainer of Jarek.");<a name="line.628"></a>
<FONT color="green">629</FONT>            }<a name="line.629"></a>
<FONT color="green">630</FONT>            // process implemented interfaces<a name="line.630"></a>
<FONT color="green">631</FONT>            info.interfaces = clazz.getInterfaces();<a name="line.631"></a>
<FONT color="green">632</FONT>            for (int i = 0; i &lt; info.interfaces.length; ++i)<a name="line.632"></a>
<FONT color="green">633</FONT>         

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -