Могу ли я преобразовать FieldValue в DomainValue в OPAL?
Я пишу статический анализ с использованием фреймворка OPAL.
Поэтому я вызываю абстрактную интерпретацию метода, где у меня есть верхние границы типа для переданных параметров как FieldTypes.
Это выглядит так:
BaseAI.perform(classFile, caller, domain)(parameters)
Где параметры это IndexedSeq[FieldType].
Это приводит к следующей ошибке типа:
несоответствие типов; найдено: scala.collection.immutable.IndexedSeq[org.opalj.br.FieldType] обязательно: опция [scala.collection.IndexedSeq[domain.DomainValue]] (которая расширяется до) Option[scala.collection.IndexedSeq[domain.Value]]
Есть ли возможность конвертировать мои FieldTypes в DomainValues?
Могу ли я использовать
domain.ClassValue(origin, identifiedFieldType)
преобразовать его, даже если тип, например, int? (так как int не является классом)
Если да, есть ли метод, который вычисляет исходный индекс для параметров метода?
1 ответ
Часть первая вопроса:
Ты можешь использовать:
domain.TypedValue(origin, parameterType)
В этом случае параметром Type может быть "любой тип".
Вторая часть вопроса:
Следующая функция, определенная объектом пакета org.opalj.ai, может использоваться для вычисления правильного индекса значения.
def parameterToValueIndex(
isStaticMethod: Boolean,
descriptor: MethodDescriptor,
parameterIndex: Int
): Int = {