if (patIdxTmp == patIdxStart + 1) {
// '**/**' situation, so skip one
patIdxStart++;
continue;
}
// Find the pattern between padIdxStart & padIdxTmp in str between
// strIdxStart & strIdxEnd
int patLength = (patIdxTmp - patIdxStart - 1);
int strLength = (strIdxEnd - strIdxStart + 1);
int foundIdx = -1;
if (patIdxTmp == patIdxStart + 1) {
// Two stars next to each other, skip the first one.
patIdxStart++;
continue;
}
// Find the pattern between padIdxStart & padIdxTmp in str between
// strIdxStart & strIdxEnd
int patLength = (patIdxTmp - patIdxStart - 1);
int strLength = (strIdxEnd - strIdxStart + 1);
int foundIdx = -1;
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 match(String, String, boolean)
|
Number of AST nodes: 6
|
|
Number of AST nodes: 6
|
|
1 | if (patIdxTmp == patIdxStart + 1) {↵ | | 1 | if (patIdxTmp == patIdxStart + 1) {↵
|
2 | // '**/**' situation, so skip one↵ | | 2 | // Two stars next to each other, skip the first one.↵
|
3 | patIdxStart++;↵ | | 3 | patIdxStart++;↵
|
4 | continue;↵ | | 4 | continue;↵
|
5 | }↵ | | 5 | }↵
|
6 | // Find the pattern between padIdxStart & padIdxTmp in str between↵ | | 6 | // Find the pattern between padIdxStart & padIdxTmp in str between↵
|
7 | // strIdxStart & strIdxEnd↵ | | 7 | // strIdxStart & strIdxEnd↵
|
8 | int patLength = (patIdxTmp - patIdxStart - 1);↵ | | 8 | int patLength = (patIdxTmp - patIdxStart - 1);↵
|
9 | int strLength = (strIdxEnd - strIdxStart + 1);↵ | | 9 | int strLength = (strIdxEnd - strIdxStart + 1);↵
|
10 | int foundIdx = -1; | | 10 | int foundIdx = -1;
|
See real code fragment |
|
See real code fragment |
Summary
Number of common nesting structure subtrees | 1 |
Number of refactorable cases | 0 |
Number of non-refactorable cases | 1 |
Time elapsed for finding largest common nesting structure subtrees (ms) | 0.2 |
Clones location | Clones are declared in the same class |
Number of node comparisons | 28 |
-
{Non-refactorable}
Mapping Summary
Number of mapped statements | 6 |
Number of unmapped statements in the first code fragment | 0 |
Number of unmapped statements in the second code fragment | 0 |
Time elapsed for statement mapping (ms) | 2.4 |
Clone type | Type 1 |
Mapped Statements
ID |
Statement |
|
ID |
Statement |
51 | if (patIdxTmp == patIdxStart + 1) | | 58 | if (patIdxTmp == patIdxStart + 1) |
52 | | | 59 | |
53 | | | 60 | |
54 | int patLength = (patIdxTmp - patIdxStart - 1); | | 61 | int patLength = (patIdxTmp - patIdxStart - 1); |
55 | int strLength = (strIdxEnd - strIdxStart + 1); | | 62 | int strLength = (strIdxEnd - strIdxStart + 1); |
56 | int foundIdx = -1; | | 63 | int foundIdx = -1; |
Precondition Violations (3)
Row |
Violation |
1 | Statement continue; without innermost loop |
2 | Statement continue; without innermost loop |
3 | Clone fragment #1 returns variables patLength, strLength, patIdxStart, foundIdx , while Clone fragment #2 returns variables patLength, strLength, patIdxStart, foundIdx |