String patDir = patDirs[patIdxEnd]; if (patDir.equals("**")) { break; } if (!match(patDir, strDirs[strIdxEnd], isCaseSensitive)) { patDirs = null; strDirs = null; return false; }
String patDir = patDirs[patIdxStart]; if (patDir.equals("**")) { break; } if (!match(patDir, strDirs[strIdxStart], isCaseSensitive)) { patDirs = null; strDirs = null; return false; }
Clone fragments detected by clone detection tool
File path: /apache-ant-1.7.0/src/org/apache/tools/ant/types/selectors/SelectorUtils.java File path: /apache-ant-1.7.0/src/org/apache/tools/ant/types/selectors/SelectorUtils.java
Method name: boolean matchPath(String, String, boolean) Method name: boolean matchPath(String, String, boolean)
Number of AST nodes: 7 Number of AST nodes: 7
1
String patDir = patDirs[patIdxEnd];
1
String patDir = patDirs[patIdxStart];
2
            if (patDir.equals("**")) {
2
            if (patDir.equals("**")) {
3
                break;
3
                break;
4
            }
4
            }
5
            if (!match(patDir, strDirs[strIdxEnd], isCaseSensitive)) {
5
            if (!match(patDir, strDirs[strIdxStart], isCaseSensitive)) {
6
                patDirs = null;
6
                patDirs = null;
7
                strDirs = null;
7
                strDirs = null;
8
                return false;
8
                return false;
9
            }
9
            }
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.5
Clones locationClones are in the same method
Number of node comparisons33
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements7
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)6.2
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    29
    String patDir = patDirs[patIdxEnd];
    29
    String patDir = patDirs[patIdxEnd];
    8
    String patDir = patDirs[patIdxStart];
    Differences
    Expression1Expression2Difference
    patIdxEndpatIdxStartVARIABLE_NAME_MISMATCH
    8
    String patDir = patDirs[patIdxStart];
    30
    if (patDir.equals("**"))
    9
    if (patDir.equals("**"))
    31
    break;
    31
    break;
    10
    break;
    Preondition Violations
    Statement break; without innermost loop
    Statement break; without innermost loop
    10
    break;
    32
    if (!match(patDir, strDirs[strIdxEnd], isCaseSensitive))
    32
    if (!match(patDir, strDirs[strIdxEnd], isCaseSensitive))
    11
    if (!match(patDir, strDirs[strIdxStart], isCaseSensitive))
    Differences
    Expression1Expression2Difference
    strIdxEndstrIdxStartVARIABLE_NAME_MISMATCH
    11
    if (!match(patDir, strDirs[strIdxStart], isCaseSensitive))
    33
    patDirs = null;
    12
    patDirs = null;
    34
    strDirs = null;
    13
    strDirs = null;
    35
    return false;
    14
    return false;
    Precondition Violations (4)
    Row Violation
    1Statement break; without innermost loop
    2Statement break; without innermost loop
    3Clone fragment #1 returns variables patDirs, strDirs , while Clone fragment #2 returns variables patDirs, strDirs
    4Not all possible execution flows end in a return statement