我可以将 FieldValue 转换为 OPAL 中的 DomainValue 吗?
Can I convert a FieldValue to a DomainValue in OPAL?
我正在使用 OPAL 框架编写静态分析。
因此,我调用了一个方法的抽象解释,其中我将传递的参数的类型上限设置为 FieldTypes。
看起来像这样:
BaseAI.perform(classFile, caller, domain)(parameters)
其中参数是 IndexedSeq[FieldType]。
这会导致以下类型错误:
type mismatch; found : scala.collection.immutable.IndexedSeq[org.opalj.br.FieldType] required: Option[scala.collection.IndexedSeq[domain.DomainValue]] (which expands to) Option[scala.collection.IndexedSeq[domain.Value]]
是否可以将我的 FieldType 转换为 DomainValues?
我可以使用
domain.ClassValue(origin, identifiedFieldType)
转换它,即使类型是例如一个整数? (因为 int 不是 class)
如果是,是否有计算方法参数来源索引的方法?
问题的第一部分:
您可以使用:
domain.TypedValue(origin, parameterType)
在这种情况下parameterType可以是"any type"。
问题的第二部分:
包对象 org.opalj.ai 定义的以下函数可用于计算正确的值索引。
def parameterToValueIndex(
isStaticMethod: Boolean,
descriptor: MethodDescriptor,
parameterIndex: Int
): Int = {
我正在使用 OPAL 框架编写静态分析。
因此,我调用了一个方法的抽象解释,其中我将传递的参数的类型上限设置为 FieldTypes。
看起来像这样:
BaseAI.perform(classFile, caller, domain)(parameters)
其中参数是 IndexedSeq[FieldType]。
这会导致以下类型错误:
type mismatch; found : scala.collection.immutable.IndexedSeq[org.opalj.br.FieldType] required: Option[scala.collection.IndexedSeq[domain.DomainValue]] (which expands to) Option[scala.collection.IndexedSeq[domain.Value]]
是否可以将我的 FieldType 转换为 DomainValues?
我可以使用
domain.ClassValue(origin, identifiedFieldType)
转换它,即使类型是例如一个整数? (因为 int 不是 class)
如果是,是否有计算方法参数来源索引的方法?
问题的第一部分:
您可以使用:
domain.TypedValue(origin, parameterType)
在这种情况下parameterType可以是"any type"。
问题的第二部分:
包对象 org.opalj.ai 定义的以下函数可用于计算正确的值索引。
def parameterToValueIndex(
isStaticMethod: Boolean,
descriptor: MethodDescriptor,
parameterIndex: Int
): Int = {