private void loadByteCodeInformation(Collection<String> keys, AsmClassProvider classProvider) { for (String key : keys) { classProvider.getClass(key, DETAIL_LEVEL.STRUCTURE_AND_CALLS); } }
private AsmClass[] internalNamesToAsmClasses(String[] internalNames, DETAIL_LEVEL level) { if (internalNames == null) { return new AsmClass[0]; } AsmClass[] asmClasses = new AsmClass[internalNames.length]; for (int i = 0; i < internalNames.length; i++) { asmClasses[i] = asmClassProvider.getClass(internalNames[i], level); } return asmClasses; }
private static void loadByteCodeInformation(Collection<String> keys, AsmClassProvider classProvider) { for (String key : keys) { classProvider.getClass(key, DETAIL_LEVEL.STRUCTURE_AND_CALLS); } }
private AsmClass[] internalNamesToAsmClasses(String[] internalNames, DETAIL_LEVEL level) { if (internalNames == null) { return new AsmClass[0]; } AsmClass[] asmClasses = new AsmClass[internalNames.length]; for (int i = 0; i < internalNames.length; i++) { asmClasses[i] = asmClassProvider.getClass(internalNames[i], level); } return asmClasses; }
public final AsmClass getClass(String internalName) { return getClass(internalName, DETAIL_LEVEL.STRUCTURE_AND_CALLS); }
public final AsmClass getClass(String internalName) { return getClass(internalName, DETAIL_LEVEL.STRUCTURE_AND_CALLS); }
@Override public void visitLdcInsn(Object cst) { if (cst instanceof Type) { Type type = (Type) cst; AsmClass usedClass = asmClassProvider.getClass(type.getInternalName(), DETAIL_LEVEL.NOTHING); method.addEdge(new AsmEdge(method, usedClass, SourceCodeEdgeUsage.USES, lineNumber)); } emptyMethod = false; }
@Override public void visitLdcInsn(Object cst) { if (cst instanceof Type) { Type type = (Type) cst; AsmClass usedClass = asmClassProvider.getClass(type.getInternalName(), DETAIL_LEVEL.NOTHING); method.addEdge(new AsmEdge(method, usedClass, SourceCodeEdgeUsage.USES, lineNumber)); } emptyMethod = false; }
@Override public void visitTypeInsn(int opcode, String internalName) { AsmClass usedClass = asmClassProvider.getClass(internalName, DETAIL_LEVEL.NOTHING); method.addEdge(new AsmEdge(method, usedClass, SourceCodeEdgeUsage.USES, lineNumber)); emptyMethod = false; }
@Override public void visitTypeInsn(int opcode, String internalName) { AsmClass usedClass = asmClassProvider.getClass(internalName, DETAIL_LEVEL.NOTHING); method.addEdge(new AsmEdge(method, usedClass, SourceCodeEdgeUsage.USES, lineNumber)); emptyMethod = false; }
@Override public void visitTryCatchBlock(Label start, Label end, Label handler, String exception) { if (exception != null) { AsmClass exceptionClass = asmClassProvider.getClass(exception, DETAIL_LEVEL.NOTHING); method.addEdge(new AsmEdge(method, exceptionClass, SourceCodeEdgeUsage.USES, lineNumber)); } emptyMethod = false; }
@Override public void visitTryCatchBlock(Label start, Label end, Label handler, String exception) { if (exception != null) { AsmClass exceptionClass = asmClassProvider.getClass(exception, DETAIL_LEVEL.NOTHING); method.addEdge(new AsmEdge(method, exceptionClass, SourceCodeEdgeUsage.USES, lineNumber)); } emptyMethod = false; }
@Override public void visitFieldInsn(int opcode, String owner, String fieldName, String fieldDescription) { AsmClass targetClass = asmClassProvider.getClass(owner, DETAIL_LEVEL.NOTHING); AsmField targetField = targetClass.getFieldOrCreateIt(fieldName); method.addEdge(new AsmEdge(method, targetField, SourceCodeEdgeUsage.CALLS_FIELD, lineNumber)); emptyMethod = false; }
private void linkVirtualMethods(Collection<String> keys, AsmClassProvider classProvider) { VirtualMethodsLinker linker = new VirtualMethodsLinker(); for (String key : keys) { AsmClass asmClass = classProvider.getClass(key, DETAIL_LEVEL.STRUCTURE_AND_CALLS); for (AsmMethod method : asmClass.getMethods()) { linker.process(method); } } }
private void notifyBytecodeVisitors(Collection<String> keys, AsmClassProvider classProvider) { BytecodeVisitor[] visitorArray = getVisitors().toArray(new BytecodeVisitor[getVisitors().size()]); for (String key : keys) { try { AsmClass asmClass = classProvider.getClass(key, DETAIL_LEVEL.STRUCTURE_AND_CALLS); BytecodeVisitorNotifier visitorNotifier = new BytecodeVisitorNotifier(asmClass, visitorArray); visitorNotifier.notifyVisitors(indexer, javaResourceLocator); } catch (Exception exception) { throw new AnalysisException("Unable to analyze .class file " + key, exception); } } }
@Override public void visitFieldInsn(int opcode, String owner, String fieldName, String fieldDescription) { AsmClass targetClass = asmClassProvider.getClass(owner, DETAIL_LEVEL.NOTHING); AsmField targetField = targetClass.getFieldOrCreateIt(fieldName); method.addEdge(new AsmEdge(method, targetField, SourceCodeEdgeUsage.CALLS_FIELD, lineNumber)); emptyMethod = false; }
private static void linkVirtualMethods(Collection<String> keys, AsmClassProvider classProvider) { VirtualMethodsLinker linker = new VirtualMethodsLinker(); for (String key : keys) { AsmClass asmClass = classProvider.getClass(key, DETAIL_LEVEL.STRUCTURE_AND_CALLS); for (AsmMethod method : asmClass.getMethods()) { linker.process(method); } } }
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { if (isNotCallToJavaArrayMethod(owner)) { AsmClass targetClass = asmClassProvider.getClass(owner, DETAIL_LEVEL.STRUCTURE); AsmMethod targetMethod = targetClass.getMethodOrCreateIt(name + desc); method.addEdge(new AsmEdge(method, targetMethod, SourceCodeEdgeUsage.CALLS_METHOD, lineNumber)); } emptyMethod = false; }
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { if (isNotCallToJavaArrayMethod(owner)) { AsmClass targetClass = asmClassProvider.getClass(owner, DETAIL_LEVEL.STRUCTURE); AsmMethod targetMethod = targetClass.getMethodOrCreateIt(name + desc); method.addEdge(new AsmEdge(method, targetMethod, SourceCodeEdgeUsage.CALLS_METHOD, lineNumber)); } emptyMethod = false; }
private void notifyBytecodeVisitors(Collection<String> keys, AsmClassProvider classProvider) { BytecodeVisitor[] visitorArray = getVisitors().toArray(new BytecodeVisitor[getVisitors().size()]); for (BytecodeVisitor bytecodeVisitor : visitorArray) { bytecodeVisitor.setContext(context); } for (String key : keys) { try { AsmClass asmClass = classProvider.getClass(key, DETAIL_LEVEL.STRUCTURE_AND_CALLS); BytecodeVisitorNotifier visitorNotifier = new BytecodeVisitorNotifier(asmClass, visitorArray); visitorNotifier.notifyVisitors(); } catch (Exception exception) { checkInterrrupted(exception); throw new AnalysisException("Unable to analyze .class file " + key, exception); } } }