在使用WALA分析Java字节码时,如何去掉不相关的类?

在使用WALA分析Java字节码时,如何去掉不相关的类?,java,bytecode,Java,Bytecode,我读了一篇关于瓦拉的文章,并尝试执行这个例子。我想知道如何除去test.jar中的测试代码之外的类。谢谢大家! import java.io.File; import java.io.IOException; import java.util.jar.JarFile; import com.ibm.wala.classLoader.IClass; import com.ibm.wala.classLoader.IMethod; import com.ibm.wala.ipa.callgraph

我读了一篇关于瓦拉的文章,并尝试执行这个例子。我想知道如何除去test.jar中的测试代码之外的类。谢谢大家!

import java.io.File;
import java.io.IOException;
import java.util.jar.JarFile;

import com.ibm.wala.classLoader.IClass;
import com.ibm.wala.classLoader.IMethod;
import com.ibm.wala.ipa.callgraph.AnalysisScope;
import com.ibm.wala.ipa.cha.ClassHierarchy;
import com.ibm.wala.ipa.cha.ClassHierarchyException;
import com.ibm.wala.ipa.cha.IClassHierarchy;
import com.ibm.wala.util.config.AnalysisScopeReader;
import com.ibm.wala.util.io.FileProvider;


public class WalaTest {
    public static void main(String args[]) throws IOException, ClassHierarchyException {

            File exFile=new FileProvider().getFile("Java60RegressionExclusions.txt");
            System.out.println(exFile.getAbsolutePath());
            AnalysisScope scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope("test.jar",exFile);
            IClassHierarchy cha = ClassHierarchy.make(scope);
            for (IClass c : cha) {
                String cname = c.getName().toString();
                System.out.println("Class:" + cname);
                for (IMethod m : c.getAllMethods()) {
                    String mname = m.getName().toString();
                    System.out.println("  method:" + mname);
                }
                System.out.println();
            }


    }
}

在IClass循环中,首先使用
isApplicationLoader()
添加以下行以检查作用域


你到底想干什么?为什么不能手动删除额外的文件?问题应该用wala标记,这是一个IBM静态分析库。@Ryan,wala现在不是有效的uptil标记。您仍然需要为整个作用域创建cha,最好只为分析过的类获取cha。
if (!scope.isApplicationLoader(c.getClassLoader())) continue;