Java 如何估计变量';静态分析的s值?

Java 如何估计变量';静态分析的s值?,java,static-analysis,intermediate-language,soot,Java,Static Analysis,Intermediate Language,Soot,我想写一个程序来实现这一点,基于烟尘的内置到达定义分析。现在我想知道这是正确的方法吗?我搜索发现似乎没有人对这个方向感兴趣 有什么建议吗?您可能想做的是使用。您希望将输入中的范围值合并为跨基本块的定义集的范围值 为此,您通常需要一个控制流图和跨越基本块的传递函数。我想您可以用类似的方式处理到达定义图 然后,您将需要跨过程的范围传播来将范围推送到整个代码中。这是您所说的一个非常普遍的问题。达到定义与此没有多大关系。全局值编号显然更符合您的要求,但很难从您的描述中分辨出来。请尝试在烟尘邮件列表中列出

我想写一个程序来实现这一点,基于烟尘的内置到达定义分析。现在我想知道这是正确的方法吗?我搜索发现似乎没有人对这个方向感兴趣


有什么建议吗?

您可能想做的是使用。您希望将输入中的范围值合并为跨基本块的定义集的范围值

为此,您通常需要一个控制流图和跨越基本块的传递函数。我想您可以用类似的方式处理到达定义图


然后,您将需要跨过程的范围传播来将范围推送到整个代码中。

这是您所说的一个非常普遍的问题。达到定义与此没有多大关系。全局值编号显然更符合您的要求,但很难从您的描述中分辨出来。请尝试在烟尘邮件列表中列出更详细的问题陈述。

这对我来说没有多大意义。估计一个变量的值意味着什么?到达定义分析有什么关系?@StephenC,我在这里做一些安全评估,例如,如果我发现一个Android应用程序在其sendText()函数中使用付费目标,我可以标记它。通过到达定义分析,我可以找到一个变量的相关定义站点,并递归地检查每个站点,以找到分配给该变量的值。这与估计变量的值无关。@StephenC:每个到达定义都显示了值范围的来源(开始时,某个输入周围的零宽度范围[“付费目标”]或常量值(如3)可由赋值消耗。到达一个点的到达定义集给出了一组范围,这些范围可以保守地组合成一个范围。你可能会争辩说一个集合比一个范围更好;所有这些都会改变计算结果的工作量,并给出不同的保守结果。