diff --git a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/Alias.java b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/Alias.java index b1e6e11..54126ef 100644 --- a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/Alias.java +++ b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/Alias.java @@ -1,5 +1,7 @@ package org.ntlab.traceCollector.tracer.trace; +import java.util.ArrayList; + /** * �I�u�W�F�N�g�̎Q�Ə��(�G�C���A�X)��\���N���X * @author Isitani @@ -53,26 +55,43 @@ public String toString() { StringBuilder str = new StringBuilder(); Statement statement = occurrencePoint.getStatement(); + String className = ""; String statementType = ""; if (statement instanceof FieldAccess) { statementType = "FieldAccess"; + className = ((FieldAccess) statement).getValueClassName(); } else if (statement instanceof FieldUpdate) { statementType = "FieldUpdate"; + className = ((FieldUpdate) statement).getValueClassName(); } else if (statement instanceof ArrayAccess) { statementType = "ArrayAccess"; + className = ((ArrayAccess) statement).getValueClassName(); } else if (statement instanceof ArrayUpdate) { statementType = "ArrayUpdate"; + className = ((ArrayUpdate) statement).getValueClassName(); } else if (statement instanceof ArrayCreate) { statementType = "ArrayCreate"; + className = ((ArrayCreate) statement).getArrayClassName(); } else if (statement instanceof MethodInvocation) { MethodExecution me = ((MethodInvocation)statement).getCalledMethodExecution(); statementType = "MethodInvocation -> " + me.getCallerSideSignature(); if(((MethodInvocation)statement).getCalledMethodExecution().isConstructor()) { statementType += " (Constructor)"; } + if (occurrenceExp == OCCURRENCE_EXP_RETURN) { + className = me.getReturnValue().getActualType(); + } else if (occurrenceExp == OCCURRENCE_EXP_RECEIVER) { + className = me.getThisClassName(); + } else { + int index = occurrenceExp - OCCURRENCE_EXP_FIRST_ARG; + ArrayList args = me.getArguments(); + if (index >= 0 && index < args.size()) { + className = me.getArguments().get(index).getActualType(); + } + } } String indent = " "; - str.append("objId: " + objectId + "\n"); + str.append("objId: " + objectId + " (class = " + className + ")" + "\n"); str.append("tp: " + occurrencePoint + "\n"); str.append(indent + "signature: " + occurrencePoint.getMethodExecution().getCallerSideSignature() + "\n"); str.append(indent + "lineNo: " + statement.getLineNo() + "\n");