Points-to analysis工具Doop的命令行参数
接前两篇博客,这里总结一下Doop的命令行参数,另外记录一下我没搞清楚的一些东西。
在终端里运行:
./doop --help all
可以看到其给出一些参数选项:
== Configuration options ==-a,--analysis <NAME> The name of the analysis. Valid values: 1-call-site-sensitive, 1-call-site-sensitive+heap, 1-object-1-type-sensitive+heap, 1-object-sensitive,1-object-sensitive+heap, 1-type-sensitive, 1-type-sensitive+heap, 2-call-site-sensitive+2-heap, 2-call-site-sensitive+heap,2-object-sensitive+2-heap, 2-object-sensitive+heap, 2-type-object-sensitive+2-heap, 2-type-object-sensitive+heap, 2-type-sensitive+heap,3-object-sensitive+3-heap, 3-type-sensitive+2-heap, 3-type-sensitive+3-heap, adaptive-2-object-sensitive+heap, basic-only, context-insensitive,context-insensitive-plus, context-insensitive-plusplus, data-flow, dependency-analysis, fully-guided-context-sensitive, micro,partitioned-2-object-sensitive+heap, selective-2-object-sensitive+heap, sound-may-point-to, sticky-2-object-sensitive, types-only, xtractor,----- (LB analyses) -----, 2-object-sensitive+heap-plus, adaptive-insens-2objH, adaptive2-insens-2objH, must-point-to, naive,paddle-2-object-sensitive, paddle-2-object-sensitive+heap, partial-insens-s2objH, refA-2-call-site-sensitive+heap, refA-2-object-sensitive+heap,refA-2-type-sensitive+heap, refB-2-call-site-sensitive+heap, refB-2-object-sensitive+heap, refB-2-type-sensitive+heap,scc-2-object-sensitive+heap, selective-2-type-sensitive+heap, selective_A-1-object-sensitive, selective_B-1-object-sensitive,special-2-object-sensitive+heap, stutter-2-object-sensitive+heap, uniform-1-object-sensitive, uniform-2-object-sensitive+heap,uniform-2-type-sensitive+heap--android Force Android mode for code inputs that are not in .apk format.--app-only Only analyze the application input(s), ignore libraries/platform.--auto-app-regex-mode <MODE> When no app regex is given, either compute an app regex for the first input ('first') or for all inputs ('all').--cfg Perform a CFG analysis.--coarse-grained-allocation-sites Aggressively merge allocation sites for all regular object types, in lib and app alike.--constant-folding Enable constant folding logic.--cs-library Enable context-sensitive analysis for internal library objects.--dacapo Load additional logic for DaCapo (2006) benchmarks properties.--dacapo-bach Load additional logic for DaCapo (Bach) benchmarks properties.--define-cpp-macro <MACRO> Define a C preprocessor macro that will be available in analysis logic.--disable-merge-exceptions Do not merge exception objects.--disable-points-to Disable (most) points-to analysis reasoning. This should only be combined with analyses that compensate (e.g., types-only).--distinguish-all-string-buffers Avoids merging string buffer objects (not recommended).--distinguish-all-string-constants Treat string constants as regular objects.--dry-run Do a dry run of the analysis (generate facts and compile but don't run analysis logic).--extra-logic <FILE> Include files with extra rules.--featherweight-analysis Perform a featherweight analysis (global state and complex objects immutable).--gen-opt-directives Generate additional relations for code optimization uses.
按道理来说都应该可以运行才对啊,可是当我尝试运行:
./doop -a must-point-to --app-only -i docs/doop-101-examples/Example.jar
就会报错:
Unsupported analysis: must-point-to
java.lang.RuntimeException: Unsupported analysis: must-point-toat org.clyze.utils.FileOps.findFileOrThrow(FileOps.groovy:60)at org.clyze.utils.FileOps.findFileOrThrow(FileOps.groovy:54)at org.clyze.doop.core.DoopAnalysisFactory.checkAnalysis(DoopAnalysisFactory.groovy:206)at org.clyze.doop.core.DoopAnalysisFactory.newAnalysis(DoopAnalysisFactory.groovy:130)at org.clyze.doop.core.DoopAnalysisFactory.newAnalysis(DoopAnalysisFactory.groovy:113)at org.clyze.doop.command.CommandLineAnalysisFactory.newAnalysis(CommandLineAnalysisFactory.groovy:96)at org.clyze.doop.Main.main2(Main.groovy:103)at org.clyze.doop.Main.main(Main.groovy:33)
ERROR: Unsupported analysis: must-point-to
这个真的是太奇怪了,看来是help没有及时更新吧??
再仔细看一下,打开这个文件:doop/src/main/groovy/org/clyze/doop/core/DoopAnalysisFactory.groovy,可以看到其有这些代码:
static final availableConfigurations = ["dependency-analysis" : "TwoObjectSensitivePlusHeapConfiguration","types-only" : "TypesOnlyConfiguration","context-insensitive" : "ContextInsensitiveConfiguration","context-insensitive-plus" : "ContextInsensitivePlusConfiguration","context-insensitive-plusplus" : "ContextInsensitivePlusPlusConfiguration","1-call-site-sensitive" : "OneCallSiteSensitiveConfiguration","1-call-site-sensitive+heap" : "OneCallSiteSensitivePlusHeapConfiguration","1-type-sensitive" : "OneTypeSensitiveConfiguration","1-type-sensitive+heap" : "OneTypeSensitivePlusHeapConfiguration","1-object-sensitive" : "OneObjectSensitiveConfiguration","1-object-sensitive+heap" : "OneObjectSensitivePlusHeapConfiguration","2-call-site-sensitive" : "TwoCallSiteSensitiveConfiguration","2-call-site-sensitive+heap" : "TwoCallSiteSensitivePlusHeapConfiguration","2-call-site-sensitive+2-heap" : "TwoCallSiteSensitivePlusTwoHeapConfiguration","2-type-sensitive" : "TwoTypeSensitiveConfiguration","2-type-sensitive+heap" : "TwoTypeSensitivePlusHeapConfiguration","2-object-sensitive" : "TwoObjectSensitiveConfiguration","2-object-sensitive+heap" : "TwoObjectSensitivePlusHeapConfiguration","fully-guided-context-sensitive" : "FullyGuidedContextSensitiveConfiguration","special-2-type-sensitive+heap" : "SpecialTwoTypeSensitivePlusHeapConfiguration","2-object-sensitive+2-heap" : "TwoObjectSensitivePlusTwoHeapConfiguration","3-object-sensitive+3-heap" : "ThreeObjectSensitivePlusThreeHeapConfiguration","2-type-object-sensitive+heap" : "TwoTypeObjectSensitivePlusHeapConfiguration","2-type-object-sensitive+2-heap" : "TwoTypeObjectSensitivePlusTwoHeapConfiguration","3-type-sensitive+2-heap" : "ThreeTypeSensitivePlusTwoHeapConfiguration","3-type-sensitive+3-heap" : "ThreeTypeSensitivePlusThreeHeapConfiguration","selective-2-object-sensitive+heap" : "SelectiveTwoObjectSensitivePlusHeapConfiguration","partitioned-2-object-sensitive+heap": "PartitionedTwoObjectSensitivePlusHeapConfiguration","1-object-1-type-sensitive+heap" : "OneObjectOneTypeSensitivePlusHeapConfiguration","web-app-sensitive" : "WebAppSensitiveConfiguration","sticky-2-object-sensitive" : "StickyTwoObjectSensitiveConfiguration","adaptive-2-object-sensitive+heap" : "AdaptiveTwoObjectSensitivePlusHeapConfiguration"]
看来上面--help中显示的选项确实有很多没有啊!!
另外,打开这个文件:doop/src/main/groovy/org/clyze/doop/core/DoopAnalysisFamily.groovy,可以看到一些关于must analysis的选项:
/* TODO: deprecated or broken? */new AnalysisOption<String>(id: "MUST",name: "must",description: "Run the must-alias analysis.",cli: false),new BooleanAnalysisOption(id: "MUST_AFTER_MAY",cli: false,forPreprocessor: true),new BooleanAnalysisOption(id: "TRANSFORM_INPUT",name: "transform-input",description: "Transform input by removing redundant instructions.",forPreprocessor: true,cli: false),
但是似乎已经没什么作用了。不得不说,Doop的开发和文档还是很靠谱的,但是还存在这种细节上的问题,呵呵,也不知道该怎么办了。
Points-to analysis工具Doop的命令行参数相关推荐
- 【linux】Valgrind工具集详解(八):Memcheck命令行参数详解
[linux]Valgrind工具集详解(五):命令行详解中不够全,在此专门针对Memcheck工具中的命令行参数做一次详细的解释. Memcheck命令行选项 –leak-check=<no| ...
- python argparse nargs_Python | 使用argparse解析命令行参数
今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse. 命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码 ...
- Alian解读SpringBoot 2.6.0 源码(三):启动流程分析之命令行参数解析
目录 一.背景 1.1.run方法整体流程 1.2.本文解读范围 二.默认应用参数解析 2.1.接口ApplicationArguments 2.2.实现类DefaultApplicationArgu ...
- Points-to analysis工具Doop的基本使用(2)
在上一篇博客中:Java和Android应用points-to analysis工具Doop的基本使用方法_qysh123的专栏-CSDN博客 我简单介绍了Souffle和Doop的安装和使用方法,下 ...
- Python中最好用的命令行参数解析工具
Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...
- java 编写命令行工具_编写命令行工具
1.使用common-cli编写命令行工具 commons-cli是Apache开源组织提供的用于解析命令行参数的包. 先引用common-cli依赖包: commons-cli commons-cl ...
- python 命令行参数-Python 中最好用的命令行参数解析工具
Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要一个命令行参数解析的 ...
- 【Android 命令行工具】Android 命令行工具简介 ( 官方文档 | SDK 命令行工具 | SDK 构建工具 | SDK 平台工具 | 模拟器工具 | Jetifier 工具 )
文章目录 一.官方文档 二.Android 命令行工具简介 1.SDK 命令行工具 2.SDK 构建工具 3.SDK 平台工具 4.模拟器工具 5.Jetifier 工具 一.官方文档 Android ...
- java命令行参数工具_Java方法中的参数太多,第8部分:工具
java命令行参数工具 在我的系列文章的前七篇文章中,有关处理Java方法中期望的参数过多的内容集中在减少方法或构造函数期望的参数数量的替代方法上. 在本系列的第八篇文章中,我将介绍一些工具,这些工具 ...
最新文章
- Centos(6、7) —— yum源的配置
- python为什么从0开始_为什么大多数编程语言中,索引都是从0开始
- 计算机网络管理考核办法,开滦医院计算机网络管理考核细则
- ITK:在图像中线性插值位置
- 理查德·汉明和他的汉明码
- ubuntu上使用sqlite3
- 华为估值知多少?倪光南:位居世界第一应该没问题
- 模型计算机控制器的设计,模型计算机控制器的设计.pdf
- 2012年10月份考试后感
- 《OpenGL超级宝典》第一章:3D图形和OpenGL简介
- 凸二次规划的解法(旋转算法)
- 数据包的忽略打印与脱敏打印
- Flask - Jinjia2
- 云队友丨盘点,到底盘什么?
- 微带贴片天线谐振边为什么是半波长?
- android room 主线程,Android Jetpack之Room篇
- Win10 出现恢复,无法加载操作系统,关键系统驱动程序丢失或错误 蓝屏错误代码0xc000007b
- 网络运营商名称显示amp;SIM名称显示
- ROS发布/订阅Float64MultiArray数组类消息(C++和Python相互发布和订阅)
- 微信小程序滚动Tab选项卡:左右滑动切换、触底加载分页