for (Enumeration en = targetTable.keys(); en.hasMoreElements();) { String curTarget = (String) en.nextElement(); String st = (String) state.get(curTarget); if (st == null) { tsort(curTarget, targetTable, state, visiting, complete); } else if (st == VISITING) { throw new RuntimeException("Unexpected node in visiting state: " + curTarget); } }
for (Enumeration en = target.getDependencies(); en.hasMoreElements();) { String cur = (String) en.nextElement(); String m = (String) state.get(cur); if (m == null) { // Not been visited tsort(cur, targetTable, state, visiting, ret); } else if (m == VISITING) { // Currently visiting this node, so have a cycle throw makeCircularException(cur, visiting); } }
Clone fragments detected by clone detection tool
File path: /apache-ant-1.7.0/src/org/apache/tools/ant/Project.java File path: /apache-ant-1.7.0/src/org/apache/tools/ant/Project.java
Method name: Vector topoSort(String[], Hashtable, boolean) Method name: void tsort(String, Hashtable, Hashtable, Stack, Vector)
Number of AST nodes: 7 Number of AST nodes: 7
1
for (Enumeration en = targetTable.keys(); en.hasMoreElements();) {
1
for (Enumeration en = target.getDependencies(); en.hasMoreElements();) {
2
            String curTarget = (String) en.nextElement();
2
            String cur = (String) en.nextElement();
3
            String st = (String) state.get(curTarget);
3
            String m = (String) state.get(cur);
4
            if (st == null) {
4
            if (m == null) {
5
                // Not been visited
5
                tsort(curTarget, targetTable, state, visiting, complete);
6
                tsort(cur, targetTable, state, visiting, ret);
6
            } else if (st == VISITING) {
7
            } else if (m == VISITING) {
7
                throw new RuntimeException("Unexpected node in visiting state: "
8
                
8
                    + curTarget
9
// Currently visiting this node, so have a cycle
9
);
10
                throw makeCircularException(cur, visiting);
10
            }
11
            }
11
        }
12
        }
Summary
Number of common nesting structure subtrees1
Number of refactorable cases0
Number of non-refactorable cases1
Time elapsed for finding largest common nesting structure subtrees (ms)0.6
Clones locationClones are declared in the same class
Number of node comparisons18
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements6
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)4.8
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    17
    String curTarget = (String)en.nextElement();
    17
    String curTarget = (String)en.nextElement();
    18
    String cur = (String)en.nextElement();
    Differences
    Expression1Expression2Difference
    curTargetcurVARIABLE_NAME_MISMATCH
    18
    String cur = (String)en.nextElement();
    18
    String st = (String)state.get(curTarget);
    18
    String st = (String)state.get(curTarget);
    19
    String m = (String)state.get(cur);
    Differences
    Expression1Expression2Difference
    stmVARIABLE_NAME_MISMATCH
    curTargetcurVARIABLE_NAME_MISMATCH
    19
    String m = (String)state.get(cur);
    19
    if (st == null)
    19
    if (st == null)
    20
    if (m == null)
    Differences
    Expression1Expression2Difference
    stmVARIABLE_NAME_MISMATCH
    20
    if (m == null)
    20
    tsort(curTarget, targetTable, state, visiting, complete);
    20
    tsort(curTarget, targetTable, state, visiting, complete);
    21
    tsort(cur, targetTable, state, visiting, ret);
    Differences
    Expression1Expression2Difference
    curTargetcurVARIABLE_NAME_MISMATCH
    completeretVARIABLE_NAME_MISMATCH
    21
    tsort(cur, targetTable, state, visiting, ret);
    21
    else if (st == VISITING)
    21
    else if (st == VISITING)
    22
    else if (m == VISITING)
    Differences
    Expression1Expression2Difference
    stmVARIABLE_NAME_MISMATCH
    22
    else if (m == VISITING)
    22
    throw new RuntimeException("Unexpected node in visiting state: " + curTarget);
    22
    throw new RuntimeException("Unexpected node in visiting state: " + curTarget);
    23
    throw makeCircularException(cur, visiting);
    Differences
    Expression1Expression2Difference
    new RuntimeException("Unexpected node in visiting state: " + curTarget)makeCircularException(cur,visiting)TYPE_COMPATIBLE_REPLACEMENT
    Preondition Violations
    Expression new RuntimeException("Unexpected node in visiting state: " + curTarget) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression makeCircularException(cur,visiting) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    • Inline private method makeCircularException
    23
    throw makeCircularException(cur, visiting);
    Precondition Violations (2)
    Row Violation
    1Expression new RuntimeException("Unexpected node in visiting state: " + curTarget) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    2Expression makeCircularException(cur,visiting) cannot be parameterized, because it has dependencies to/from statements that will be extracted