栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Slicer4j运行defects4j(一)--Slicer4j安装

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Slicer4j运行defects4j(一)--Slicer4j安装

运行动态切片的工具有Javaslicer,但是JavaSlicer也存在一系列问题,适应的jdk版本较低,无法处理多线程的数据。于是英属哥伦比亚大学的学者Khaled Ahmed提出了一种新的动态切片工具slicer4j。Slicer4J使用低开销的工具收集运行时执行跟踪;然后,它构造一个线程感知的、过程间动态控制流图,并使用该图来计算切片。

项目源码slicer4j

slicer4j安装 环境准备

python3 需要准备python3.8及以上,因为slicer4j中使用的python脚本低版本的python不支持。

sudo apt-get update
sudo apt-get install python3.9

jdk9及以上,slicer4j需要jdk9,但是defects4j项目在jdk9下运行时会出错,所以尽量还是把jdk8一块装上。

mvn3.9

building the tool

建立并且安装动态切片核心,从网址下载DynamicSlicingCore

cd core/
mvn -Dmaven.test.skip=true clean install
cd -

建立slicer4j,下载slicer4j

cd Slicer4J/
mvn -Dmaven.test.skip=true clean install
cd -

这里有个坑,如果使用这种方式建造,在使用slicer4j.py运行SlicerMe这个小测试项目的时候,生成不了东西,后来打包方式改变了,可以运行slicerMe了。可能的解决方法

mvn -Dmaven.test.skip=true clean compile assembly:single install
slicer4j介绍

主要有上图这几个文件夹,其中我理解的Slicer4j这个文件夹里面就是这个工具本身,毕竟进去把slicer4j工具编译安装了,scripts中提供了一些脚本,方便使用。benchmarks里面有一些项目,slicer4j,javaslicer和defects4j的,是基准测试集,用来比较和javaslicer的性能以及进行slicer4j使用体验的。 

slicer4j使用

官网上的使用Java进行的命令行代码我一直没用成功使用,老是出现java.lang.NoClassDefFoundError:soot/type  ,有朋友搞出来了可以在评论区告诉我一声。

java -cp "Slicer4J/target/slicer4j-jar-with-dependencies.jar:Slicer4J/target/lib/*" ca.ubc.ece.resess.slicer.dynamic.slicer4j.Slicer -h

但是运行scripts里面的脚本能运行起来

python3 slicer4j.py -h

这两行代码都是列出slicer的参数。

将slicer4j应用在实际项目上

进入benchmarks/SliceMe找到SliceMe项目,

mvn clean package

将项目打包,按照官网上在target目录下运行 java -jar sliceme-1.0.0.jar SlicerMe会报错

 需要修改jar包中的manifest.mf文件

这个项目就是不传入参数时会报错,这时候再使用scripts,py

cd scripts
python3 slicer4j.py -j ../benchmarks/SliceMe/target/sliceme-1.0.0.jar -o sliceme_slice/ -b SliceMe:9 -m "SliceMe"

就能成功在scripts下的sliceme_slice文件夹下查看所有的切片信息了

 这个项目目前bug还是挺多。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770889.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号