| |
---|
| | |
---|
| | public class ReverseDebuggerAnalyzer { |
---|
| | |
---|
| | public static ArrayList<Alias> findAllStartAlias(MethodExecution me) { |
---|
| | System.out.println("OnlineTraceAnalyzer#findAllStartAlias(MethodExecution)が呼ばれたよ!"); |
---|
| | ArrayList<Alias> startAliasList = new ArrayList<>(); |
---|
| | List<Statement> statements = me.getStatements(); |
---|
| | String[] primitives = {"byte", "short", "int", "long", "float", "double", "char", "boolean"}; |
---|
| | List<String> primitiveList = Arrays.asList(primitives); |
---|
| |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | for (Alias startAlias : startAliasList) { |
---|
| | System.out.println(startAlias); |
---|
| | } |
---|
| | return startAliasList; |
---|
| | } |
---|
| | |
---|
| | private static TracePoint getRecentlyFieldUpdate(TracePoint tp) { |
---|
| | System.out.println("OnlineTraceAnalyzer#getRecentlyFieldUpdate(TracePoint)が呼ばれたよ!"); |
---|
| | Statement statement = tp.getStatement(); |
---|
| | if (statement instanceof FieldAccess) { |
---|
| | FieldAccess fa = (FieldAccess)statement; |
---|
| | // return TraceJSON.getFieldUpdateTracePoint(fa.getContainerObjId(), fa.getFieldName(), tp); |
---|
| |
---|
| | return null; |
---|
| | } |
---|
| | |
---|
| | private static TracePoint getRecentlyArrayUpdate(TracePoint tp) { |
---|
| | System.out.println("OnlineTraceAnalyzer#getRecentlyArrayUpdate(TracePoint)が呼ばれたよ!"); |
---|
| | Statement statement = tp.getStatement(); |
---|
| | if (statement instanceof ArrayAccess) { |
---|
| | ArrayAccess aa = (ArrayAccess)statement; |
---|
| | // return TraceJSON.getArrayUpdateTracePoint(aa.getArrayObjectId(), aa.getIndex(), tp); |
---|
| |
---|
| | return null; |
---|
| | } |
---|
| | |
---|
| | public static ArrayList<ArrayList<Alias>> getObjectFlow(Alias startAlias) { |
---|
| | System.out.println("OnlineTraceAnalyzer#getObjectFlow(Alias)が呼ばれたよ!"); |
---|
| | ArrayList<ArrayList<Alias>> aliasLists = new ArrayList<>(); |
---|
| | ArrayList<Alias> aliasList = new ArrayList<>(); |
---|
| | aliasLists.add(aliasList); |
---|
| | // aliasList.add(alias); |
---|
| |
---|
| | // if (lastAliasOccurrenceEXP != Alias.OCCURRENCE_EXP_RETURN) { |
---|
| | // resultLists.remove(resultList); // 末尾のエイリアスが配列生成やコンストラクタ呼び出しではないリストを削除する |
---|
| | // } |
---|
| | // } |
---|
| | for (List<Alias> resultList : resultLists) { |
---|
| | for (Alias resultAlias : resultList) { |
---|
| | System.out.println(resultAlias); |
---|
| | } |
---|
| | } |
---|
| | return resultLists; |
---|
| | } |
---|
| | |
---|
| | private static ArrayList<ArrayList<Alias>> getObjectFlow(ArrayList<ArrayList<Alias>> aliasLists, |
---|
| | String objId, TracePoint tp, int side) { |
---|
| | System.out.println("OnlineTraceAnalyzer#getObjectFlow(ArrayList, String, TracePoint, int)が呼ばれたよ!"); |
---|
| | ArrayList<Alias> aliasList = aliasLists.get(aliasLists.size() - 1); // このgetObjectFlowメソッド実行内で見つかったエイリアスを入れていくリスト |
---|
| | do { |
---|
| | Statement statement = tp.getStatement(); |
---|
| | if (statement instanceof FieldAccess) { |
---|
| |
---|
| | return aliasLists; |
---|
| | } |
---|
| | |
---|
| | public static int countMethodExecutionInTraceCollector(List<MethodExecution> methodExecutions, String targetSignature, int count, String indent) { |
---|
| | System.out.println("OnlineTraceAnalyzer#countMethodExecutionInTraceCollector(List, String, int, String)が呼ばれたよ!"); |
---|
| | if (methodExecutions == null || methodExecutions.isEmpty()) { |
---|
| | return count; |
---|
| | } |
---|
| | for (int i = 0; i < methodExecutions.size(); i++) { |
---|
| |
---|
| | |