switch (currentLetter) { case 'n': appendLetter(Letters.LF); break; case 'r': appendLetter(Letters.CR); break; case 't': appendLetter(Letters.TAB); break; case 'b': appendLetter(Letters.BACKSPACE); break; case 'f': appendLetter(Letters.FORM_FEED); break; case 'e': appendLetter(Letters.ESCAPE); break; case 'v': appendLetter(Letters.VERTICAL_TAB); break; case 'a': appendLetter(Letters.ALERT); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': escape = ComplexEscape.OCTAL; readingComplexEscape = true; escapeLength = 1; escapeValue = (char) (currentLetter - '0'); dataBuffer.ColumnStart = dataBuffer.Position + 1; break; case 'u': case 'x': case 'o': case 'd': case 'U': case 'X': case 'O': case 'D': switch (currentLetter) { case 'u': case 'U': escape = ComplexEscape.UNICODE; break; case 'x': case 'X': escape = ComplexEscape.HEX; break; case 'o': case 'O': escape = ComplexEscape.OCTAL; break; case 'd': case 'D': escape = ComplexEscape.DECIMAL; break; } readingComplexEscape = true; escapeLength = 0; escapeValue = (char) 0; dataBuffer.ColumnStart = dataBuffer.Position + 1; break; default: break; } lastLetterWasEscape = false;
switch (currentLetter) { case 'n': appendLetter(Letters.LF); break; case 'r': appendLetter(Letters.CR); break; case 't': appendLetter(Letters.TAB); break; case 'b': appendLetter(Letters.BACKSPACE); break; case 'f': appendLetter(Letters.FORM_FEED); break; case 'e': appendLetter(Letters.ESCAPE); break; case 'v': appendLetter(Letters.VERTICAL_TAB); break; case 'a': appendLetter(Letters.ALERT); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': escape = ComplexEscape.OCTAL; readingComplexEscape = true; escapeLength = 1; escapeValue = (char) (currentLetter - '0'); dataBuffer.ColumnStart = dataBuffer.Position + 1; break; case 'u': case 'x': case 'o': case 'd': case 'U': case 'X': case 'O': case 'D': switch (currentLetter) { case 'u': case 'U': escape = ComplexEscape.UNICODE; break; case 'x': case 'X': escape = ComplexEscape.HEX; break; case 'o': case 'O': escape = ComplexEscape.OCTAL; break; case 'd': case 'D': escape = ComplexEscape.DECIMAL; break; } readingComplexEscape = true; escapeLength = 0; escapeValue = (char) 0; dataBuffer.ColumnStart = dataBuffer.Position + 1; break; default: break; } lastLetterWasBackslash = false;
Clone fragments detected by clone detection tool
File path: /sql12/plugins/dataimport/src/com/csvreader/CsvReader.java File path: /sql12/plugins/dataimport/src/com/csvreader/CsvReader.java
Method name: boolean readRecord() Method name: boolean readRecord()
Number of AST nodes: 72 Number of AST nodes: 72
1
switch (currentLetter) {
1
switch (currentLetter) {
2
									case 'n':
2
									case 'n':
3
										appendLetter(Letters.LF);
3
										appendLetter(Letters.LF);
4
										break;
4
										break;
5
									case 'r':
5
									case 'r':
6
										appendLetter(Letters.CR);
6
										appendLetter(Letters.CR);
7
										break;
7
										break;
8
									case 't':
8
									case 't':
9
										appendLetter(Letters.TAB);
9
										appendLetter(Letters.TAB);
10
										break;
10
										break;
11
									case 'b':
11
									case 'b':
12
										appendLetter(Letters.BACKSPACE);
12
										appendLetter(Letters.BACKSPACE);
13
										break;
13
										break;
14
									case 'f':
14
									case 'f':
15
										appendLetter(Letters.FORM_FEED);
15
										appendLetter(Letters.FORM_FEED);
16
										break;
16
										break;
17
									case 'e':
17
									case 'e':
18
										appendLetter(Letters.ESCAPE);
18
										appendLetter(Letters.ESCAPE);
19
										break;
19
										break;
20
									case 'v':
20
									case 'v':
21
										appendLetter(Letters.VERTICAL_TAB);
21
										appendLetter(Letters.VERTICAL_TAB);
22
										break;
22
										break;
23
									case 'a':
23
									case 'a':
24
										appendLetter(Letters.ALERT);
24
										appendLetter(Letters.ALERT);
25
										break;
25
										break;
26
									case '0':
26
									case '0':
27
									case '1':
27
									case '1':
28
									case '2':
28
									case '2':
29
									case '3':
29
									case '3':
30
									case '4':
30
									case '4':
31
									case '5':
31
									case '5':
32
									case '6':
32
									case '6':
33
									case '7':
33
									case '7':
34
										escape = ComplexEscape.OCTAL;
34
										escape = ComplexEscape.OCTAL;
35
										readingComplexEscape = true;
35
										readingComplexEscape = true;
36
										escapeLength = 1;
36
										escapeLength = 1;
37
										escapeValue = (char) (currentLetter - '0');
37
										escapeValue = (char) (currentLetter - '0');
38
										dataBuffer.ColumnStart = dataBuffer.Position + 1;
38
										dataBuffer.ColumnStart = dataBuffer.Position + 1;
39
										break;
39
										break;
40
									case 'u':
40
									case 'u':
41
									case 'x':
41
									case 'x':
42
									case 'o':
42
									case 'o':
43
									case 'd':
43
									case 'd':
44
									case 'U':
44
									case 'U':
45
									case 'X':
45
									case 'X':
46
									case 'O':
46
									case 'O':
47
									case 'D':
47
									case 'D':
48
										switch (currentLetter) {
48
										switch (currentLetter) {
49
										case 'u':
49
										case 'u':
50
										case 'U':
50
										case 'U':
51
											escape = ComplexEscape.UNICODE;
51
											escape = ComplexEscape.UNICODE;
52
											break;
52
											break;
53
										case 'x':
53
										case 'x':
54
										case 'X':
54
										case 'X':
55
											escape = ComplexEscape.HEX;
55
											escape = ComplexEscape.HEX;
56
											break;
56
											break;
57
										case 'o':
57
										case 'o':
58
										case 'O':
58
										case 'O':
59
											escape = ComplexEscape.OCTAL;
59
											escape = ComplexEscape.OCTAL;
60
											break;
60
											break;
61
										case 'd':
61
										case 'd':
62
										case 'D':
62
										case 'D':
63
											escape = ComplexEscape.DECIMAL;
63
											escape = ComplexEscape.DECIMAL;
64
											break;
64
											break;
65
										}
65
										}
66
										readingComplexEscape = true;
66
										readingComplexEscape = true;
67
										escapeLength = 0;
67
										escapeLength = 0;
68
										escapeValue = (char) 0;
68
										escapeValue = (char) 0;
69
										dataBuffer.ColumnStart = dataBuffer.Position + 1;
69
										dataBuffer.ColumnStart = dataBuffer.Position + 1;
70
										break;
70
										break;
71
									default:
71
									default:
72
										break;
72
										break;
73
									}
73
									}
74
									lastLetterWasEscape = false;
74
									lastLetterWasBackslash = false;
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)23.2
Clones locationClones are in the same method
Number of node comparisons1648
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements72
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)499.1
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    76
    switch (currentLetter)
    236
    switch (currentLetter)
    77
    case 'n':
    237
    case 'n':
    78
    appendLetter(Letters.LF);
    238
    appendLetter(Letters.LF);
    79
    break;
    239
    break;
    80
    case 'r':
    240
    case 'r':
    81
    appendLetter(Letters.CR);
    241
    appendLetter(Letters.CR);
    82
    break;
    242
    break;
    83
    case 't':
    243
    case 't':
    84
    appendLetter(Letters.TAB);
    244
    appendLetter(Letters.TAB);
    85
    break;
    245
    break;
    86
    case 'b':
    246
    case 'b':
    87
    appendLetter(Letters.BACKSPACE);
    247
    appendLetter(Letters.BACKSPACE);
    88
    break;
    248
    break;
    89
    case 'f':
    249
    case 'f':
    90
    appendLetter(Letters.FORM_FEED);
    250
    appendLetter(Letters.FORM_FEED);
    91
    break;
    251
    break;
    92
    case 'e':
    252
    case 'e':
    93
    appendLetter(Letters.ESCAPE);
    253
    appendLetter(Letters.ESCAPE);
    94
    break;
    254
    break;
    95
    case 'v':
    255
    case 'v':
    96
    appendLetter(Letters.VERTICAL_TAB);
    256
    appendLetter(Letters.VERTICAL_TAB);
    97
    break;
    257
    break;
    98
    case 'a':
    258
    case 'a':
    99
    appendLetter(Letters.ALERT);
    259
    appendLetter(Letters.ALERT);
    100
    break;
    260
    break;
    101
    case '0':
    261
    case '0':
    102
    case '1':
    262
    case '1':
    103
    case '2':
    263
    case '2':
    104
    case '3':
    264
    case '3':
    105
    case '4':
    265
    case '4':
    106
    case '5':
    266
    case '5':
    107
    case '6':
    267
    case '6':
    108
    case '7':
    268
    case '7':
    109
    escape = ComplexEscape.OCTAL;
    269
    escape = ComplexEscape.OCTAL;
    110
    readingComplexEscape = true;
    270
    readingComplexEscape = true;
    111
    escapeLength = 1;
    271
    escapeLength = 1;
    112
    escapeValue = (char)(currentLetter - '0');
    272
    escapeValue = (char)(currentLetter - '0');
    113
    dataBuffer.ColumnStart = dataBuffer.Position + 1;
    273
    dataBuffer.ColumnStart = dataBuffer.Position + 1;
    114
    break;
    274
    break;
    115
    case 'u':
    275
    case 'u':
    116
    case 'x':
    276
    case 'x':
    117
    case 'o':
    277
    case 'o':
    118
    case 'd':
    278
    case 'd':
    119
    case 'U':
    279
    case 'U':
    120
    case 'X':
    280
    case 'X':
    121
    case 'O':
    281
    case 'O':
    122
    case 'D':
    282
    case 'D':
    123
    switch (currentLetter)
    283
    switch (currentLetter)
    124
    case 'u':
    284
    case 'u':
    125
    case 'U':
    285
    case 'U':
    126
    escape = ComplexEscape.UNICODE;
    286
    escape = ComplexEscape.UNICODE;
    127
    break;
    287
    break;
    128
    case 'x':
    288
    case 'x':
    129
    case 'X':
    289
    case 'X':
    130
    escape = ComplexEscape.HEX;
    290
    escape = ComplexEscape.HEX;
    131
    break;
    291
    break;
    132
    case 'o':
    292
    case 'o':
    133
    case 'O':
    293
    case 'O':
    134
    escape = ComplexEscape.OCTAL;
    294
    escape = ComplexEscape.OCTAL;
    135
    break;
    295
    break;
    136
    case 'd':
    296
    case 'd':
    137
    case 'D':
    297
    case 'D':
    138
    escape = ComplexEscape.DECIMAL;
    298
    escape = ComplexEscape.DECIMAL;
    139
    break;
    299
    break;
    140
    readingComplexEscape = true;
    300
    readingComplexEscape = true;
    141
    escapeLength = 0;
    301
    escapeLength = 0;
    142
    escapeValue = (char)0;
    302
    escapeValue = (char)0;
    143
    dataBuffer.ColumnStart = dataBuffer.Position + 1;
    303
    dataBuffer.ColumnStart = dataBuffer.Position + 1;
    144
    break;
    304
    break;
    145
    default:
    305
    default:
    146
    break;
    306
    break;
    147
    lastLetterWasEscape = false;
    147
    lastLetterWasEscape = false;
    307
    lastLetterWasBackslash = false;
    Differences
    Expression1Expression2Difference
    lastLetterWasEscapelastLetterWasBackslashVARIABLE_NAME_MISMATCH
    307
    lastLetterWasBackslash = false;
    Precondition Violations (1)
    Row Violation
    1Clone fragment #1 returns variables readingComplexEscape, escapeLength, escape, escapeValue, lastLetterWasEscape , while Clone fragment #2 returns variables lastLetterWasBackslash, readingComplexEscape, escapeLength, escape, escapeValue