File path: /emf-2.4.1/src/org/eclipse/emf/importer/rose/builder/RoseEcoreBuilder.java | File path: /emf-2.4.1/src/org/eclipse/emf/importer/rose/builder/RoseEcoreBuilder.java | |||
Method name: List
|
Method name: List
|
|||
Number of AST nodes: 23 | Number of AST nodes: 23 | |||
1 | List<ETypeParameter> result = new ArrayList<ETypeParameter>();↵ | 1 | List<EGenericType> result = new ArrayList<EGenericType>();↵ | |
2 | int start = 0;↵ | 2 | int start = 0;↵ | |
3 | int depth = 0;↵ | 3 | int depth = 0;↵ | |
4 | for (int i = 0, length = templateParameters.length(); i < length; ++i)↵ | 4 | for (int i = 0, length = templateArguments.length(); i < length; ++i)↵ | |
5 | {↵ | 5 | {↵ | |
6 | char character = templateParameters.charAt(i);↵ | 6 | char character = templateArguments.charAt(i);↵ | |
7 | switch (character)↵ | 7 | switch (character)↵ | |
8 | {↵ | 8 | {↵ | |
9 | case ' ':↵ | 9 | case ' ':↵ | |
10 | {↵ | 10 | {↵ | |
11 | if (start == i)↵ | 11 | if (start == i)↵ | |
12 | {↵ | 12 | {↵ | |
13 | ++start;↵ | 13 | ++ start;↵ | |
14 | }↵ | 14 | }↵ | |
15 | break;↵ | 15 | break;↵ | |
16 | }↵ | 16 | }↵ | |
17 | case '<':↵ | 17 | case '<':↵ | |
18 | {↵ | 18 | {↵ | |
19 | ++depth;↵ | 19 | ++depth;↵ | |
20 | break;↵ | 20 | break;↵ | |
21 | }↵ | 21 | }↵ | |
22 | case '>':↵ | 22 | case '>':↵ | |
23 | {↵ | 23 | {↵ | |
24 | --depth;↵ | 24 | --depth;↵ | |
25 | break;↵ | 25 | break;↵ | |
26 | }↵ | 26 | }↵ | |
27 | case ',':↵ | 27 | case ',':↵ | |
28 | {↵ | 28 | {↵ | |
29 | if (depth == 0)↵ | 29 | if (depth == 0)↵ | |
30 | {↵ | 30 | {↵ | |
31 | result.add(parseTemplateParameter(templateParameters.substring(start, i).trim()));↵ | 31 | result.add(parseTemplateArgument(templateArguments.substring(start, i).trim()));↵ | |
32 | start = i + 1;↵ | 32 | start = i + 1;↵ | |
33 | }↵ | 33 | }↵ | |
34 | break;↵ | 34 | break;↵ | |
35 | }↵ | 35 | }↵ | |
36 | }↵ | 36 | }↵ | |
37 | }↵ | 37 | }↵ | |
38 | result.add(parseTemplateParameter(templateParameters.substring(start).trim()));↵ | 38 | result.add(parseTemplateArgument(templateArguments.substring(start).trim()));↵ | |
39 | return result; | 39 |
| |
See real code fragment | See real code fragment |
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.5 |
Clones location | Clones are declared in the same class |
Number of node comparisons | 113 |
Number of mapped statements | 19 |
Number of unmapped statements in the first code fragment | 4 |
Number of unmapped statements in the second code fragment | 4 |
Time elapsed for statement mapping (ms) | 3.8 |
Clone type | Type 2 |
ID | Statement | ID | Statement | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | List<EGenericType> result = new ArrayList<EGenericType>(); | ||||||||||||
1 | List<ETypeParameter> result = new ArrayList<ETypeParameter>(); | | ||||||||||||
2 | int start = 0; | 2 | int start = 0; | |||||||||||
3 | int depth = 0; | 3 | int depth = 0; | |||||||||||
4 | for (int i = 0, length = templateParameters.length(); i < length; ++i) |
| 4 | for (int i = 0, length = templateArguments.length(); i < length; ++i) | ||||||||||
5 | char character = templateParameters.charAt(i); |
| 5 | char character = templateArguments.charAt(i); | ||||||||||
6 | switch (character) | 6 | switch (character) | |||||||||||
7 | case ' ': | 7 | case ' ': | |||||||||||
8 | if (start == i) | 8 | if (start == i) | |||||||||||
9 | ++start; | 9 | ++start; | |||||||||||
10 | break; | 10 | break; | |||||||||||
11 | case '<': | 11 | case '<': | |||||||||||
12 | ++depth; | 12 | ++depth; | |||||||||||
13 | break; | 13 | break; | |||||||||||
14 | case '>': | 14 | case '>': | |||||||||||
15 | --depth; | 15 | --depth; | |||||||||||
16 | break; | 16 | break; | |||||||||||
17 | case ',': | 17 | case ',': | |||||||||||
18 | if (depth == 0) | 18 | if (depth == 0) | |||||||||||
|
| 19 | result.add(parseTemplateArgument(templateArguments.substring(start, i).trim())); | |||||||||||
19 | result.add(parseTemplateParameter(templateParameters.substring(start, i).trim())); |
| | |||||||||||
20 | start = i + 1; | 20 | start = i + 1; | |||||||||||
21 | break; | 21 | break; | |||||||||||
| 22 | result.add(parseTemplateArgument(templateArguments.substring(start).trim())); | ||||||||||||
22 | result.add(parseTemplateParameter(templateParameters.substring(start).trim())); | | ||||||||||||
|
| 23 | return result; | |||||||||||
23 | return result; |
| |
Row | Violation |
---|---|
1 | Unmatched statement result.add(parseTemplateArgument(templateArguments.substring(start,i).trim())); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
2 | Unmatched statement result.add(parseTemplateParameter(templateParameters.substring(start,i).trim())); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
3 | Unmatched return result; |
4 | Unmatched return result; |
5 | Clone fragment #1 returns variables start, i , while Clone fragment #2 returns variables start, i |