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 cf4ce7c..568a561 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 @@ -55,8 +55,28 @@ String indent = " "; str.append("objId: " + objectId + "\n"); str.append("tp: " + occurrencePoint + "\n"); - str.append(indent + "signature: " + occurrencePoint.getMethodExecution().getSignature() + "\n"); - str.append(indent + "lineNo: " + occurrencePoint.getStatement().getLineNo() + "\n"); + str.append(indent + "signature: " + occurrencePoint.getMethodExecution().getCallerSideSignature() + "\n"); +// str.append(indent + "signature: " + occurrencePoint.getMethodExecution().getSignature() + "\n"); + Statement statement = occurrencePoint.getStatement(); + String statementType = ""; + if (statement instanceof FieldAccess) { + statementType = "FieldAccess"; + } else if (statement instanceof FieldUpdate) { + statementType = "FieldUpdate"; + } else if (statement instanceof ArrayAccess) { + statementType = "ArrayAccess"; + } else if (statement instanceof ArrayUpdate) { + statementType = "ArrayUpdate"; + } else if (statement instanceof ArrayCreate) { + statementType = "ArrayCreate"; + } else if (statement instanceof MethodInvocation) { + statementType = "MethodInvocation"; + if(((MethodInvocation)statement).getCalledMethodExecution().isConstructor()) { + statementType += " (Constructor)"; + } + } + str.append(indent + "statementType: " + statementType + "\n"); + str.append(indent + "lineNo: " + statement.getLineNo() + "\n"); str.append("occurrenceExp: " + occurrenceExp + "\n"); return str.toString(); } diff --git a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java index 43f1ff9..103d1d7 100644 --- a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java +++ b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java @@ -1001,8 +1001,20 @@ public static ArrayList> getObjectFlow(Alias alias) { ArrayList> aliasLists = new ArrayList<>(); ArrayList aliasList = new ArrayList<>(); - aliasList.add(alias); - return getObjectFlow(aliasLists, alias.getObjectId(), alias.getOccurrencePoint(), 0); + aliasLists.add(aliasList); +// aliasList.add(alias); + String objId = alias.getObjectId(); + TracePoint tp = alias.getOccurrencePoint().duplicate(); + ArrayList> result = getObjectFlow(aliasLists, objId, tp, 0); + // �ȉ���for���[�v�͊m�F�p + for (ArrayList list : result) { + System.out.println("-------------------------------------------"); + for (Alias element : list) { + System.out.println(element); + } + } + return result; +// return getObjectFlow(aliasLists, alias.getObjectId(), alias.getOccurrencePoint(), 0); } private static ArrayList> getObjectFlow(ArrayList> aliasLists, @@ -1053,7 +1065,7 @@ aliasList = aliasLists.get(aliasLists.size() - 1); } } - } while (tp.stepBackOver()); + } while (tp.stepBackOver()); // �Ăяo�����ɖ߂邩����ȏ�H��Ȃ��Ȃ�܂Ń��[�v if (!tp.isValid()) { return aliasLists; // ����ȏチ�\�b�h���s��k��Ȃ��ꍇ(main���\�b�h�̂���ɑO�Ȃ�)�͂��̎��_�ŏI�� } @@ -1068,7 +1080,7 @@ // �T���J�n���\�b�h���s�܂��̓t�B�[���h��z��v�f�̍ŏI�X�V�T���Ŕ�񂾐�̃��\�b�h���s����, �X�^�b�N�g���[�X�ł��ǂ��S���\�b�h���s�̏ꍇ TracePoint previousTp = tp.duplicate(); previousTp.stepBackOver(); - aliasLists = getObjectFlow(aliasLists, objId, previousTp, 0); // �Ăяo�����̃��\�b�h���s�ɐ��� + aliasLists = getObjectFlow(aliasLists, objId, previousTp, 0); // �Ăяo�����̃��\�b�h���s�ɖ߂� } } }