File path: /emf-2.4.1/src/org/eclipse/emf/ecore/xml/type/internal/RegEx.java | File path: /emf-2.4.1/src/org/eclipse/emf/ecore/xml/type/internal/RegEx.java | |||
Method name: int matchString(Context, Op, int, int, int)
|
Method name: int matchCharacterIterator(Context, Op, int, int, int)
|
|||
Number of AST nodes: 61 | Number of AST nodes: 61 | |||
1 | switch (op.getData()) {↵ | 1 | switch (op.getData()) {↵ | |
2 | case '^':↵ | 2 | case '^':↵ | |
3 | if (isSet(opts, MULTIPLE_LINES)) {↵ | 3 | if (isSet(opts, MULTIPLE_LINES)) {↵ | |
4 | if (!(offset == con.start↵ | 4 | if (!(offset == con.start↵ | |
5 | || offset > con.start && isEOLChar( target .charAt( offset-1 ) )))↵ | 5 | || offset > con.start && isEOLChar( target .setIndex( offset-1 ) )))↵ | |
6 | return -1;↵ | 6 | return -1;↵ | |
7 | } else {↵ | 7 | } else {↵ | |
8 | if (offset != con.start)↵ | 8 | if (offset != con.start)↵ | |
9 | return -1;↵ | 9 | return -1;↵ | |
10 | }↵ | 10 | }↵ | |
11 | break;↵ | 11 | break;↵ | |
12 | case '@': // Internal use only.↵ | 12 | case '@': // Internal use only.↵ | |
13 | // The @ always matches line beginnings.↵ | 13 | // The @ always matches line beginnings.↵ | |
14 | if (!(offset == con.start↵ | 14 | if (!(offset == con.start↵ | |
15 | || offset > con.start && isEOLChar( target .charAt( offset-1 ) )))↵ | 15 | || offset > con.start && isEOLChar( target .setIndex( offset-1 ) )))↵ | |
16 | return -1;↵ | 16 | return -1;↵ | |
17 | break;↵ | 17 | break;↵ | |
18 | case '$':↵ | 18 | case '$':↵ | |
19 | if (isSet(opts, MULTIPLE_LINES)) {↵ | 19 | if (isSet(opts, MULTIPLE_LINES)) {↵ | |
20 | if (!(offset == con.limit↵ | 20 | if (!(offset == con.limit↵ | |
21 | || offset < con.limit && isEOLChar( target .charAt( offset ) )))↵ | 21 | || offset < con.limit && isEOLChar( target .setIndex( offset ) )))↵ | |
22 | return -1;↵ | 22 | return -1;↵ | |
23 | } else {↵ | 23 | } else {↵ | |
24 | if (!(offset == con.limit↵ | 24 | if (!(offset == con.limit↵ | |
25 | || offset+1 == con.limit && isEOLChar( target .charAt( offset ) )↵ | 25 | || offset+1 == con.limit && isEOLChar( target .setIndex( offset ) )↵ | |
26 | || offset+2 == con.limit && target .charAt( offset ) == CARRIAGE_RETURN↵ | 26 | || offset+2 == con.limit && target .setIndex( offset ) == CARRIAGE_RETURN↵ | |
27 | && target .charAt( offset+1 ) == LINE_FEED))↵ | 27 | && target .setIndex( offset+1 ) == LINE_FEED))↵ | |
28 | return -1;↵ | 28 | return -1;↵ | |
29 | }↵ | 29 | }↵ | |
30 | break;↵ | 30 | break;↵ | |
31 | case 'A':↵ | 31 | case 'A':↵ | |
32 | if (offset != con.start) return -1;↵ | 32 | if (offset != con.start) return -1;↵ | |
33 | break;↵ | 33 | break;↵ | |
34 | case 'Z':↵ | 34 | case 'Z':↵ | |
35 | if (!(offset == con.limit↵ | 35 | if (!(offset == con.limit↵ | |
36 | || offset+1 == con.limit && isEOLChar( target .charAt( offset ) )↵ | 36 | || offset+1 == con.limit && isEOLChar( target .setIndex( offset ) )↵ | |
37 | || offset+2 == con.limit && target .charAt( offset ) == CARRIAGE_RETURN↵ | 37 | || offset+2 == con.limit && target .setIndex( offset ) == CARRIAGE_RETURN↵ | |
38 | && target .charAt( offset+1 ) == LINE_FEED))↵ | 38 | && target .setIndex( offset+1 ) == LINE_FEED))↵ | |
39 | return -1;↵ | 39 | return -1;↵ | |
40 | break;↵ | 40 | break;↵ | |
41 | case 'z':↵ | 41 | case 'z':↵ | |
42 | if (offset != con.limit) return -1;↵ | 42 | if (offset != con.limit) return -1;↵ | |
43 | break;↵ | 43 | break;↵ | |
44 | case 'b':↵ | 44 | case 'b':↵ | |
45 | if (con.length == 0) return -1;↵ | 45 | if (con.length == 0) return -1;↵ | |
46 | {↵ | 46 | {↵ | |
47 | int after = getWordType(target, con.start, con.limit, offset, opts);↵ | 47 | int after = getWordType(target, con.start, con.limit, offset, opts);↵ | |
48 | if (after == WT_IGNORE) return -1;↵ | 48 | if (after == WT_IGNORE) return -1;↵ | |
49 | int before = getPreviousWordType(target, con.start, con.limit, offset, opts);↵ | 49 | int before = getPreviousWordType(target, con.start, con.limit, offset, opts);↵ | |
50 | if (after == before) return -1;↵ | 50 | if (after == before) return -1;↵ | |
51 | }↵ | 51 | }↵ | |
52 | break;↵ | 52 | break;↵ | |
53 | case 'B':↵ | 53 | case 'B':↵ | |
54 | if (con.length == 0)↵ | 54 | if (con.length == 0)↵ | |
55 | go = true;↵ | 55 | go = true;↵ | |
56 | else {↵ | 56 | else {↵ | |
57 | int after = getWordType(target, con.start, con.limit, offset, opts);↵ | 57 | int after = getWordType(target, con.start, con.limit, offset, opts);↵ | |
58 | go = after == WT_IGNORE↵ | 58 | go = after == WT_IGNORE↵ | |
59 | || after == getPreviousWordType(target, con.start, con.limit, offset, opts);↵ | 59 | || after == getPreviousWordType(target, con.start, con.limit, offset, opts);↵ | |
60 | }↵ | 60 | }↵ | |
61 | if (!go) return -1;↵ | 61 | if (!go) return -1;↵ | |
62 | break;↵ | 62 | break;↵ | |
63 | case '<':↵ | 63 | case '<':↵ | |
64 | if (con.length == 0 || offset == con.limit) return -1;↵ | 64 | if (con.length == 0 || offset == con.limit) return -1;↵ | |
65 | if (getWordType(target, con.start, con.limit, offset, opts) != WT_LETTER↵ | 65 | if (getWordType(target, con.start, con.limit, offset, opts) != WT_LETTER↵ | |
66 | || getPreviousWordType(target, con.start, con.limit, offset, opts) != WT_OTHER)↵ | 66 | || getPreviousWordType(target, con.start, con.limit, offset, opts) != WT_OTHER)↵ | |
67 | return -1;↵ | 67 | return -1;↵ | |
68 | break;↵ | 68 | break;↵ | |
69 | case '>':↵ | 69 | case '>':↵ | |
70 | if (con.length == 0 || offset == con.start) return -1;↵ | 70 | if (con.length == 0 || offset == con.start) return -1;↵ | |
71 | if (getWordType(target, con.start, con.limit, offset, opts) != WT_OTHER↵ | 71 | if (getWordType(target, con.start, con.limit, offset, opts) != WT_OTHER↵ | |
72 | || getPreviousWordType(target, con.start, con.limit, offset, opts) != WT_LETTER)↵ | 72 | || getPreviousWordType(target, con.start, con.limit, offset, opts) != WT_LETTER)↵ | |
73 | return -1;↵ | 73 | return -1;↵ | |
74 | break;↵ | 74 | break;↵ | |
75 | } | 75 |
| |
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) | 20.8 |
Clones location | Clones are declared in the same class |
Number of node comparisons | 871 |
Number of mapped statements | 61 |
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) | 108.3 |
Clone type | Type 2 |
ID | Statement | ID | Statement | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
99 | switch (op.getData()) | 99 | switch (op.getData()) | ||||||||||||||||||||||||||||||||
100 | case '^': | 100 | case '^': | ||||||||||||||||||||||||||||||||
101 | if (isSet(opts, MULTIPLE_LINES)) | 101 | if (isSet(opts, MULTIPLE_LINES)) | ||||||||||||||||||||||||||||||||
102 | if (!(offset == con.start || offset > con.start && isEOLChar(target.charAt(offset - 1)))) |
| 102 | if (!(offset == con.start || offset > con.start && isEOLChar(target.setIndex(offset - 1)))) | |||||||||||||||||||||||||||||||
103 | return -1; | 103 | return -1; | ||||||||||||||||||||||||||||||||
else | else | ||||||||||||||||||||||||||||||||||
104 | if (offset != con.start) | 104 | if (offset != con.start) | ||||||||||||||||||||||||||||||||
105 | return -1; | 105 | return -1; | ||||||||||||||||||||||||||||||||
106 | break; | 106 | break; | ||||||||||||||||||||||||||||||||
107 | case '@': | 107 | case '@': | ||||||||||||||||||||||||||||||||
108 | if (!(offset == con.start || offset > con.start && isEOLChar(target.charAt(offset - 1)))) |
| 108 | if (!(offset == con.start || offset > con.start && isEOLChar(target.setIndex(offset - 1)))) | |||||||||||||||||||||||||||||||
109 | return -1; | 109 | return -1; | ||||||||||||||||||||||||||||||||
110 | break; | 110 | break; | ||||||||||||||||||||||||||||||||
111 | case '$': | 111 | case '$': | ||||||||||||||||||||||||||||||||
112 | if (isSet(opts, MULTIPLE_LINES)) | 112 | if (isSet(opts, MULTIPLE_LINES)) | ||||||||||||||||||||||||||||||||
113 | if (!(offset == con.limit || offset < con.limit && isEOLChar(target.charAt(offset)))) |
| 113 | if (!(offset == con.limit || offset < con.limit && isEOLChar(target.setIndex(offset)))) | |||||||||||||||||||||||||||||||
114 | return -1; | 114 | return -1; | ||||||||||||||||||||||||||||||||
else | else | ||||||||||||||||||||||||||||||||||
115 | if (!(offset == con.limit || offset + 1 == con.limit && isEOLChar(target.charAt(offset)) || offset + 2 == con.limit && target.charAt(offset) == CARRIAGE_RETURN && target.charAt(offset + 1) == LINE_FEED)) |
| 115 | if (!(offset == con.limit || offset + 1 == con.limit && isEOLChar(target.setIndex(offset)) || offset + 2 == con.limit && target.setIndex(offset) == CARRIAGE_RETURN && target.setIndex(offset + 1) == LINE_FEED)) | |||||||||||||||||||||||||||||||
116 | return -1; | 116 | return -1; | ||||||||||||||||||||||||||||||||
117 | break; | 117 | break; | ||||||||||||||||||||||||||||||||
118 | case 'A': | 118 | case 'A': | ||||||||||||||||||||||||||||||||
119 | if (offset != con.start) | 119 | if (offset != con.start) | ||||||||||||||||||||||||||||||||
120 | return -1; | 120 | return -1; | ||||||||||||||||||||||||||||||||
121 | break; | 121 | break; | ||||||||||||||||||||||||||||||||
122 | case 'Z': | 122 | case 'Z': | ||||||||||||||||||||||||||||||||
123 | if (!(offset == con.limit || offset + 1 == con.limit && isEOLChar(target.charAt(offset)) || offset + 2 == con.limit && target.charAt(offset) == CARRIAGE_RETURN && target.charAt(offset + 1) == LINE_FEED)) |
| 123 | if (!(offset == con.limit || offset + 1 == con.limit && isEOLChar(target.setIndex(offset)) || offset + 2 == con.limit && target.setIndex(offset) == CARRIAGE_RETURN && target.setIndex(offset + 1) == LINE_FEED)) | |||||||||||||||||||||||||||||||
124 | return -1; | 124 | return -1; | ||||||||||||||||||||||||||||||||
125 | break; | 125 | break; | ||||||||||||||||||||||||||||||||
126 | case 'z': | 126 | case 'z': | ||||||||||||||||||||||||||||||||
127 | if (offset != con.limit) | 127 | if (offset != con.limit) | ||||||||||||||||||||||||||||||||
128 | return -1; | 128 | return -1; | ||||||||||||||||||||||||||||||||
129 | break; | 129 | break; | ||||||||||||||||||||||||||||||||
130 | case 'b': | 130 | case 'b': | ||||||||||||||||||||||||||||||||
131 | if (con.length == 0) | 131 | if (con.length == 0) | ||||||||||||||||||||||||||||||||
132 | return -1; | 132 | return -1; | ||||||||||||||||||||||||||||||||
133 | int after = getWordType(target, con.start, con.limit, offset, opts); |
| 133 | int after = getWordType(target, con.start, con.limit, offset, opts); | |||||||||||||||||||||||||||||||
134 | if (after == WT_IGNORE) | 134 | if (after == WT_IGNORE) | ||||||||||||||||||||||||||||||||
135 | return -1; | 135 | return -1; | ||||||||||||||||||||||||||||||||
136 | int before = getPreviousWordType(target, con.start, con.limit, offset, opts); |
| 136 | int before = getPreviousWordType(target, con.start, con.limit, offset, opts); | |||||||||||||||||||||||||||||||
137 | if (after == before) | 137 | if (after == before) | ||||||||||||||||||||||||||||||||
138 | return -1; | 138 | return -1; | ||||||||||||||||||||||||||||||||
139 | break; | 139 | break; | ||||||||||||||||||||||||||||||||
140 | case 'B': | 140 | case 'B': | ||||||||||||||||||||||||||||||||
141 | if (con.length == 0) | 141 | if (con.length == 0) | ||||||||||||||||||||||||||||||||
142 | go = true; | 142 | go = true; | ||||||||||||||||||||||||||||||||
else | else | ||||||||||||||||||||||||||||||||||
143 | int after = getWordType(target, con.start, con.limit, offset, opts); |
| 143 | int after = getWordType(target, con.start, con.limit, offset, opts); | |||||||||||||||||||||||||||||||
144 | go = after == WT_IGNORE || after == getPreviousWordType(target, con.start, con.limit, offset, opts); |
| 144 | go = after == WT_IGNORE || after == getPreviousWordType(target, con.start, con.limit, offset, opts); | |||||||||||||||||||||||||||||||
145 | if (!go) | 145 | if (!go) | ||||||||||||||||||||||||||||||||
146 | return -1; | 146 | return -1; | ||||||||||||||||||||||||||||||||
147 | break; | 147 | break; | ||||||||||||||||||||||||||||||||
148 | case '<': | 148 | case '<': | ||||||||||||||||||||||||||||||||
149 | if (con.length == 0 || offset == con.limit) | 149 | if (con.length == 0 || offset == con.limit) | ||||||||||||||||||||||||||||||||
150 | return -1; | 150 | return -1; | ||||||||||||||||||||||||||||||||
151 | if (getWordType(target, con.start, con.limit, offset, opts) != WT_LETTER || getPreviousWordType(target, con.start, con.limit, offset, opts) != WT_OTHER) |
| 151 | if (getWordType(target, con.start, con.limit, offset, opts) != WT_LETTER || getPreviousWordType(target, con.start, con.limit, offset, opts) != WT_OTHER) | |||||||||||||||||||||||||||||||
152 | return -1; | 152 | return -1; | ||||||||||||||||||||||||||||||||
153 | break; | 153 | break; | ||||||||||||||||||||||||||||||||
154 | case '>': | 154 | case '>': | ||||||||||||||||||||||||||||||||
155 | if (con.length == 0 || offset == con.start) | 155 | if (con.length == 0 || offset == con.start) | ||||||||||||||||||||||||||||||||
156 | return -1; | 156 | return -1; | ||||||||||||||||||||||||||||||||
157 | if (getWordType(target, con.start, con.limit, offset, opts) != WT_OTHER || getPreviousWordType(target, con.start, con.limit, offset, opts) != WT_LETTER) |
| 157 | if (getWordType(target, con.start, con.limit, offset, opts) != WT_OTHER || getPreviousWordType(target, con.start, con.limit, offset, opts) != WT_LETTER) | |||||||||||||||||||||||||||||||
158 | return -1; | 158 | return -1; | ||||||||||||||||||||||||||||||||
159 | break; | 159 | break; |
Row | Violation |
---|---|
1 | Expression target.setIndex(offset - 1) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
2 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
3 | Expression target.setIndex(offset - 1) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
4 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
5 | Expression target.setIndex(offset) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
6 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
7 | Expression target.setIndex(offset) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
8 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
9 | Expression target.setIndex(offset) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
10 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
11 | Expression target.setIndex(offset + 1) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
12 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
13 | Expression target.setIndex(offset) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
14 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
15 | Expression target.setIndex(offset) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
16 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
17 | Expression target.setIndex(offset + 1) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
18 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
19 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
20 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
21 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
22 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
23 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
24 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
25 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |
26 | Type java.lang.String of variable target does not match with type java.text.CharacterIterator of variable target |