Wala使用心得
来源:互联网 发布:商标域名注册 编辑:程序博客网 时间:2024/06/18 12:54
WALA是IBM公司于2006年开源,目前可以从github上获取源码,编译,使用,但是在国内,编译WALA可能会被qiang,所以,直接使用maven仓库中已经编译好的WALA二进制包是最为方便的。
WALA核心功能:
- Java的系统类型和类的层次结构分析
- 源语言框架支持java和javascript
- 过程间数据流分析(RHS的求解器)
- 基于上下文敏感的切片
- 指针分析与调用图构造
- 基于SSA的寄存器转换语言IR
- 迭代数据流的总体框架
- 通用分析实用程序和数据结构
- 一个字节码库(Shrike)和一个java动态负荷时间仪表库(DILA)
本文使用maven中的二进制包,利用WALA做最简单的类分析。
首先从maven库中下载二进制包,链接如下:
http://mvnrepository.com/artifact/com.ibm.wala
然后非常重要的一点就是要将core.jar中的java路径,不修改的话可能会导致错误。使用winrar软件打开core.jar文件
将log_sample.properties和wala_sample.properties两个文件修改如图中所示的名字,并保存,然后打开wala.properties,
将java_runtime_dir设置为PC当前的java路径 ,比如:java_runtime_dir= C:/Program Files/Java/jre1.8.0_144/lib
然后保存到jar包中即可。
然后将jar包导入到eclipse中,
导入好的包如下图所示
这里建议下载1.4.3版本(eclipse中新建工程等省略)
这一步也十分重要
将上图中的Java60RegressionExclusions.txt、primordial.jar、primordial.txt三个文件从源码(自行从github上下载即可)中找到,并且复制粘贴到eclipse工程中即可,不导入也会产生错误。
接下来,就可以使用WALA进行简单的类分析。
public static void main(String args[]) throws IOException, ClassHierarchyException, IllegalArgumentException, InvalidClassFileException, CancelException {
// 获得一个文件
File exFile=new FileProvider().getFile("Java60RegressionExclusions.txt");
// 将分析域存到文件中
AnalysisScope scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope("zookeeper-3.3.6.jar", exFile);
// 构建ClassHierarchy,相当与类的一个层级结构
ClassHierarchy cha = ClassHierarchyFactory.make(scope);
// 循环遍历每一个类
for(IClass klass : cha) {
// 打印类名
System.out.println(klass.getName().toString());
// 判断当前类是否在zookeeper中
if(scope.isApplicationLoader(klass.getClassLoader())) {
// 对在zookeeper中的类的每个函数遍历,并打印函数名
for (IMethod m : klass.getAllMethods()) {
System.out.println(m.getName().toString());
}
}
}
}
以上代码是一个最简单的类名打印和函数名打印的功能。
WALA首页:http://wala.sourceforge.net/wiki/index.php/Main_Page
本次就先简单的介绍如何使用WALA进行最简单的类名和函数名分析,下一篇将介绍如何构建调用图和系统依赖图。
- Wala使用心得
- 编译WALA
- 使用HtmlParser使用心得
- libcurl使用心得libcurl使用心得
- freemarker的使用心得,freemarker使用心得
- 使用resin中的心得
- C# Builder 使用心得
- Synchronized使用心得
- CreateProcess使用心得
- JSTL使用心得
- Protel 99 使用心得
- log4j使用心得
- knoppix使用心得
- Eclipse使用心得
- ireport0.4.0使用心得
- 异常的使用心得
- 无线MODEM使用心得
- 使用tortoiseSVN心得
- mysql ifnull函数的使用
- 热修复——简单原理与简单实现
- 狗屎一样的React(第五节,React组件的生命周期)
- ThinkPHP导出Excel
- CentOS7.2编译安装Mysql
- Wala使用心得
- Robot Framework-失败用例自动重跑
- 分答项目_技能点_require加载模块
- NEUQACM OJ 1015:同因查找
- 判断两条线段是否相交
- RN中的键盘遮挡问题解决
- 原生js写淡入淡出轮播(点击按钮)
- java使用异常
- 升级/降级内核 VirtualBox报错 Kernel driver not installed (rc=-1908) 最新解决办法