public TaintTrackingMethodVisitor(InheritanceMap inheritanceMap, Map<MethodReference.Handle, Set<Integer>> passthroughDataflow, final int api, final MethodVisitor mv, final String owner, int access, String name, String desc, String signature, String[] exceptions) { super(api, new AnalyzerAdapter(owner, access, name, desc, mv)); this.inheritanceMap = inheritanceMap; this.passthroughDataflow = passthroughDataflow; this.analyzerAdapter = (AnalyzerAdapter)this.mv; this.access = access; this.name = name; this.desc = desc; this.signature = signature; this.exceptions = exceptions; }
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { ReplaceVariablesMethodAdapter actualAdapter = new ReplaceVariablesMethodAdapter( super.visitMethod(access, name, desc, signature, exceptions), className, name, possibilities, desc, mm, projectVariables.getStaticVariables(className), projectVariables.getClassVariables(className)); AnalyzerAdapter analyzerAdapter = new AnalyzerAdapter(className, access, name, desc, actualAdapter); actualAdapter.setAnlyzeAdapter(analyzerAdapter); return analyzerAdapter; }
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { ReplaceVariablesPossibilitiesMethodAdapter actualAdapter = new ReplaceVariablesPossibilitiesMethodAdapter( super.visitMethod(access, name, desc, signature, exceptions), className, name, mutationPossibilityCollector, possibilities, desc, projectVariables.getStaticVariables(className), projectVariables.getClassVariables(className)); AnalyzerAdapter analyzerAdapter = new AnalyzerAdapter(className, access, name, desc, actualAdapter); actualAdapter.setAnlyzeAdapter(analyzerAdapter); return analyzerAdapter; }
@Override public void visitEnd() { super.visitEnd(); LabelFlowAnalyzer.markLabels(this); final MethodProbesAdapter probesAdapter = new MethodProbesAdapter( methodProbes, ClassProbesAdapter.this); if (trackFrames) { final AnalyzerAdapter analyzer = new AnalyzerAdapter( ClassProbesAdapter.this.name, access, name, desc, probesAdapter); probesAdapter.setAnalyzer(analyzer); methodProbes.accept(this, analyzer); } else { methodProbes.accept(this, probesAdapter); } } };
projectVariables.getClassVariables(className)); mv = rvAdapter; AnalyzerAdapter analyzerAdapter = new AnalyzerAdapter(className, access, name, desc, mv); rvAdapter.setAnlyzeAdapter(analyzerAdapter);
projectVariables.getClassVariables(className)); mv = rvAdapter; AnalyzerAdapter analyzerAdapter = new AnalyzerAdapter(className, access, name, desc, mv); rvAdapter.setAnlyzeAdapter(analyzerAdapter);