SootUp icon indicating copy to clipboard operation
SootUp copied to clipboard

JavaSourcePathAnalysisInputLocation

Open yongxin3344520 opened this issue 11 months ago • 2 comments

yongxin3344520 avatar Mar 21 '24 06:03 yongxin3344520

        List<AnalysisInputLocation> inputLocations = new ArrayList<>();
        inputLocations.add( new JavaSourcePathAnalysisInputLocation("ruoyi-ti//java//") ) ;
        inputLocations.add(new DefaultRTJarAnalysisInputLocation()); // add rt.jar
        JavaView view = new JavaView(inputLocations);
        // Get a MethodSignature
        ClassType classTypeA = view.getIdentifierFactory().getClassType("com.ruoyi.web.controller.system.SysIndexController");
        MethodSignature methodSignature =
                JavaIdentifierFactory.getInstance()
                        .getMethodSignature(
                                classTypeA,
                                "indexabc",
                                "java.lang.String",
                                Arrays.asList("int")
                        );


        Optional<JavaSootMethod> opt = view.getMethod(methodSignature);
        if(!opt.isPresent()){
            throw new RuntimeException("方法不存在");
        }

com.ibm.wala.ipa.cha.ClassHierarchyException: factory.getLoader failed at com.ibm.wala.ipa.cha.ClassHierarchy.(ClassHierarchy.java:291) at com.ibm.wala.ipa.cha.ClassHierarchy.(ClassHierarchy.java:203) at com.ibm.wala.ipa.cha.ClassHierarchyFactory.make(ClassHierarchyFactory.java:85) at com.ibm.wala.ipa.cha.ClassHierarchyFactory.make(ClassHierarchyFactory.java:71) at sootup.java.sourcecode.frontend.WalaJavaClassProvider.buildClassHierachy(WalaJavaClassProvider.java:219) at sootup.java.sourcecode.frontend.WalaJavaClassProvider.getClassSource(WalaJavaClassProvider.java:296) at sootup.java.sourcecode.frontend.WalaJavaClassProvider.createClassSource(WalaJavaClassProvider.java:356) at sootup.java.sourcecode.inputlocation.JavaSourcePathAnalysisInputLocation.getClassSource(JavaSourcePathAnalysisInputLocation.java:170) at sootup.java.core.views.JavaView.lambda$getClassSource$4(JavaView.java:147) at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) at java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.util.stream.SliceOps$SliceTask.doLeaf(Unknown Source) at java.util.stream.SliceOps$SliceTask.doLeaf(Unknown Source) at java.util.stream.AbstractShortCircuitTask.compute(Unknown Source) at java.util.concurrent.CountedCompleter.exec(Unknown Source) at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) Caused by: java.lang.NullPointerException at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:1737) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNode(JDTJava2CAstTranslator.java:3843) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:1718) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNode(JDTJava2CAstTranslator.java:3829) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNodeOrNodes(JDTJava2CAstTranslator.java:3902) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.createBlock(JDTJava2CAstTranslator.java:1454) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:1459) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitNode(JDTJava2CAstTranslator.java:3803) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:904) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.createClassDeclaration(JDTJava2CAstTranslator.java:527) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visitTypeDecl(JDTJava2CAstTranslator.java:434) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.visit(JDTJava2CAstTranslator.java:3777) at com.ibm.wala.cast.java.translator.jdt.JDTJava2CAstTranslator.translateToCAst(JDTJava2CAstTranslator.java:273) at com.ibm.wala.cast.java.translator.jdt.ecj.ECJSourceModuleTranslator$ECJAstToIR.acceptAST(ECJSourceModuleTranslator.java:158) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:1068) at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:659) at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:1003) at com.ibm.wala.cast.java.translator.jdt.ecj.ECJSourceModuleTranslator.loadAllSources(ECJSourceModuleTranslator.java:258) at com.ibm.wala.cast.java.loader.JavaSourceLoaderImpl.loadAllSources(JavaSourceLoaderImpl.java:599) at com.ibm.wala.classLoader.ClassLoaderImpl.init(ClassLoaderImpl.java:506) at com.ibm.wala.cast.java.loader.JavaSourceLoaderImpl.init(JavaSourceLoaderImpl.java:608) at com.ibm.wala.cast.java.translator.jdt.ecj.ECJClassLoaderFactory.makeNewClassLoader(ECJClassLoaderFactory.java:31) at com.ibm.wala.classLoader.ClassLoaderFactoryImpl.getLoader(ClassLoaderFactoryImpl.java:61) at com.ibm.wala.ipa.cha.ClassHierarchy.(ClassHierarchy.java:270) ... 20 more Exception in thread "main" java.lang.NullPointerException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.util.concurrent.ForkJoinTask.getThrowableException(Unknown Source) at java.util.concurrent.ForkJoinTask.reportException(Unknown Source) at java.util.concurrent.ForkJoinTask.invoke(Unknown Source) at java.util.stream.SliceOps$1.opEvaluateParallelLazy(Unknown Source) at java.util.stream.AbstractPipeline.sourceSpliterator(Unknown Source) at java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.util.stream.ReferencePipeline.findAny(Unknown Source) at sootup.java.core.views.JavaView.getClassSource(JavaView.java:154) at sootup.java.core.views.JavaView.getClass(JavaView.java:114) at sootup.java.core.views.JavaView.getMethod(JavaView.java:121) at CC.main(CC.java:74) Caused by: java.lang.NullPointerException at sootup.java.sourcecode.frontend.WalaJavaClassProvider.loadWalaClass(WalaJavaClassProvider.java:310) at sootup.java.sourcecode.frontend.WalaJavaClassProvider.getClassSource(WalaJavaClassProvider.java:299) at sootup.java.sourcecode.frontend.WalaJavaClassProvider.createClassSource(WalaJavaClassProvider.java:356) at sootup.java.sourcecode.inputlocation.JavaSourcePathAnalysisInputLocation.getClassSource(JavaSourcePathAnalysisInputLocation.java:170) at sootup.java.core.views.JavaView.lambda$getClassSource$4(JavaView.java:147) at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) at java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.util.stream.SliceOps$SliceTask.doLeaf(Unknown Source) at java.util.stream.SliceOps$SliceTask.doLeaf(Unknown Source) at java.util.stream.AbstractShortCircuitTask.compute(Unknown Source) at java.util.concurrent.CountedCompleter.exec(Unknown Source) at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

yongxin3344520 avatar Mar 21 '24 06:03 yongxin3344520

The Sourcecode frontend is experimental. If you can you should just build the project and use the bytecode frontend

JonasKlauke avatar Mar 21 '24 08:03 JonasKlauke