facebook / fresco
Duplication

Places in code with 6 or more lines that are exactly the same.

Intro
  • For duplication, we look at places in code where there are 6 or more lines of code that are exactly the same.
  • Before duplication is calculated, the code is cleaned to remove empty lines, comments, and frequently duplicated constructs such as imports.
  • You should aim at having as little as possible (<5%) of duplicated code as high-level of duplication can lead to maintenance difficulties, poor factoring, and logical contradictions.
Learn more...
Duplication Overall
  • 11% duplication:
    • 40,978 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 4,838 duplicated lines
  • 393 duplicates
system11% (4,838 lines)
Duplication per Extension
java7% (2,519 lines)
cpp42% (1,322 lines)
h76% (512 lines)
c29% (273 lines)
kt4% (162 lines)
xml43% (50 lines)
Duplication per Component (primary)
imagepipeline10% (1,264 lines)
static-webp41% (887 lines)
native-imagetranscoder76% (770 lines)
drawee9% (474 lines)
vito5% (310 lines)
native-filters30% (284 lines)
animated-gif15% (192 lines)
fbcore3% (136 lines)
memory-types36% (134 lines)
imagepipeline-native19% (98 lines)
animated-webp32% (80 lines)
drawee-span15% (38 lines)
imagepipeline-backends18% (37 lines)
animated-base3% (36 lines)
imagepipeline-base1% (28 lines)
animated-drawable2% (22 lines)
animated-gif-lite3% (18 lines)
imagepipeline-base-test4% (15 lines)
drawee-backends<1% (8 lines)
viewport28% (7 lines)
middleware0% (0 lines)
tools0% (0 lines)
soloader0% (0 lines)
imagepipeline-test0% (0 lines)
ui-common0% (0 lines)
buildSrc0% (0 lines)
ROOT0% (0 lines)
mockito-config0% (0 lines)

Duplication Between Components (50+ lines)

G native-imagetranscoder native-imagetranscoder static-webp static-webp native-imagetranscoder--static-webp 1442 animated-gif animated-gif animated-gif--static-webp 236 animated-webp animated-webp animated-gif--animated-webp 124 imagepipeline-native imagepipeline-native imagepipeline-native--native-imagetranscoder 58 imagepipeline-native--static-webp 94 native-filters native-filters imagepipeline-native--native-filters 82 native-filters--native-imagetranscoder 58 native-filters--static-webp 54 imagepipeline-backends imagepipeline-backends imagepipeline imagepipeline imagepipeline-backends--imagepipeline 62

Download: SVG DOT (open online Graphviz editor)

Open 3D force graph...

Show more details on duplication between components...
Longest Duplicates
The list of 50 longest duplicates.
See data for all 393 duplicates...
Size#FoldersFilesLinesCode
216 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
16:372 (100%)
16:372 (100%)
view
61 x 2 animated-gif/src/main/jni/gifimage
static-webp/src/main/jni/static-webp
14:190 (100%)
14:190 (100%)
view
59 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
18:101 (45%)
18:101 (46%)
view
53 x 2 imagepipeline/src/main/j...k/imagepipeline/bitmaps
imagepipeline/src/main/j...k/imagepipeline/bitmaps
274:326 (9%)
494:546 (9%)
view
44 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
97:181 (67%)
97:181 (67%)
view
44 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
153:215 (33%)
148:210 (34%)
view
41 x 2 native-imagetranscoder/s.../native-imagetranscoder
static-webp/src/main/jni/static-webp
16:63 (100%)
16:63 (100%)
view
41 x 2 native-imagetranscoder/s.../native-imagetranscoder
static-webp/src/main/jni/static-webp
14:97 (100%)
14:97 (100%)
view
38 x 2 imagepipeline/src/main/j...k/imagepipeline/bitmaps
imagepipeline/src/main/j...k/imagepipeline/bitmaps
236:273 (6%)
455:492 (6%)
view
33 x 2 native-imagetranscoder/s.../native-imagetranscoder
static-webp/src/main/jni/static-webp
15:74 (100%)
15:74 (100%)
view
33 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
18:89 (100%)
18:89 (100%)
view
32 x 2 imagepipeline-native/src/main/jni/imagepipeline
static-webp/src/main/jni/static-webp
15:56 (96%)
15:56 (100%)
view
30 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
17:67 (81%)
17:67 (81%)
view
29 x 2 native-filters/src/main/jni/filters
native-filters/src/main/jni/filters
161:199 (5%)
267:305 (5%)
view
29 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
16:105 (100%)
16:105 (100%)
view
25 x 2 animated-gif/src/main/ja...m/facebook/animated/gif
animated-webp/src/main/j.../facebook/animated/webp
33:73 (40%)
33:73 (53%)
view
25 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
19:99 (100%)
19:99 (100%)
view
24 x 2 native-filters/src/main/jni/filters
native-filters/src/main/jni/filters
195:226 (4%)
433:464 (4%)
view
24 x 2 native-imagetranscoder/s.../native-imagetranscoder
static-webp/src/main/jni/static-webp
48:77 (53%)
282:311 (10%)
view
23 x 2 imagepipeline/src/main/j...book/imagepipeline/core
imagepipeline/src/main/j...book/imagepipeline/core
291:313 (9%)
319:341 (9%)
view
22 x 2 imagepipeline/src/main/j...imagepipeline/producers
imagepipeline/src/main/j...imagepipeline/producers
145:171 (20%)
206:232 (9%)
view
20 x 2 native-filters/src/main/jni/filters
native-filters/src/main/jni/filters
201:226 (3%)
313:338 (3%)
view
20 x 2 native-filters/src/main/jni/filters
native-filters/src/main/jni/filters
313:338 (3%)
439:464 (3%)
view
20 x 2 imagepipeline/src/main/j...k/imagepipeline/bitmaps
imagepipeline/src/main/j...k/imagepipeline/bitmaps
147:167 (3%)
364:383 (3%)
view
20 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
17:81 (30%)
17:81 (30%)
view
17 x 2 vito/tools/liveeditor/sr...o/vito/tools/liveeditor
vito/tools/liveeditor/sr...o/vito/tools/liveeditor
87:104 (17%)
116:133 (17%)
view
17 x 2 animated-gif/src/main/ja...m/facebook/animated/gif
animated-webp/src/main/j.../facebook/animated/webp
153:179 (10%)
126:152 (15%)
view
17 x 2 drawee/src/main/java/com/facebook/drawee/drawable
drawee/src/main/java/com/facebook/drawee/drawable
234:278 (10%)
191:229 (9%)
view
17 x 2 imagepipeline/src/main/j...imagepipeline/producers
imagepipeline/src/main/j...imagepipeline/producers
113:139 (20%)
74:100 (26%)
view
16 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
18:57 (100%)
18:57 (100%)
view
16 x 2 animated-gif/src/main/jni/gifimage
static-webp/src/main/jni/static-webp
14:134 (100%)
12:132 (100%)
view
16 x 2 imagepipeline/src/main/j...imagepipeline/producers
imagepipeline/src/main/j...imagepipeline/producers
118:133 (3%)
157:172 (3%)
view
15 x 2 fbcore/src/main/java/com/facebook/common/executors
fbcore/src/main/java/com/facebook/common/executors
133:155 (19%)
30:52 (21%)
view
15 x 2 drawee/src/main/java/com/facebook/drawee/drawable
drawee/src/main/java/com/facebook/drawee/drawable
67:87 (27%)
136:156 (13%)
view
14 x 2 imagepipeline-native/src...magepipeline/nativecode
imagepipeline/src/main/j.../imagepipeline/platform
56:87 (12%)
64:94 (8%)
view
14 x 2 imagepipeline-native/src/main/jni/imagepipeline
native-filters/src/main/jni/native-filters
39:56 (42%)
39:56 (43%)
view
14 x 2 native-filters/src/main/jni/native-filters
static-webp/src/main/jni/static-webp
39:56 (43%)
39:56 (43%)
view
14 x 2 imagepipeline/src/main/j...book/imagepipeline/core
imagepipeline/src/main/j...book/imagepipeline/core
493:507 (2%)
557:571 (2%)
view
14 x 2 native-filters/src/main/jni/native-filters
native-imagetranscoder/s.../native-imagetranscoder
39:56 (43%)
39:56 (43%)
view
14 x 2 imagepipeline/src/main/j...imagepipeline/producers
imagepipeline/src/main/j...imagepipeline/producers
71:87 (12%)
62:78 (13%)
view
14 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
114:135 (10%)
114:135 (11%)
view
14 x 2 native-imagetranscoder/s.../native-imagetranscoder
static-webp/src/main/jni/static-webp
39:56 (43%)
39:56 (43%)
view
14 x 2 imagepipeline-native/src/main/jni/imagepipeline
native-imagetranscoder/s.../native-imagetranscoder
39:56 (42%)
39:56 (43%)
view
13 x 2 fbcore/src/main/java/com...ebook/common/references
fbcore/src/main/java/com...ebook/common/references
40:57 (38%)
38:55 (43%)
view
13 x 2 drawee/src/main/java/com/facebook/drawee/drawable
drawee/src/main/java/com/facebook/drawee/drawable
193:224 (7%)
198:231 (5%)
view
13 x 2 drawee/src/main/java/com/facebook/drawee/drawable
drawee/src/main/java/com/facebook/drawee/drawable
236:268 (8%)
198:231 (5%)
view
13 x 2 drawee/src/main/java/com/facebook/drawee/drawable
drawee/src/main/java/com/facebook/drawee/drawable
369:381 (3%)
403:415 (3%)
view
12 x 2 drawee/src/main/java/com/facebook/drawee/drawable
drawee/src/main/java/com/facebook/drawee/drawable
127:142 (7%)
112:127 (6%)
view
12 x 2 animated-gif/src/main/jni/gifimage
static-webp/src/main/jni/static-webp
973:988 (1%)
410:425 (2%)
view
12 x 2 drawee/src/main/java/com/facebook/drawee/drawable
drawee/src/main/java/com/facebook/drawee/drawable
209:220 (3%)
236:247 (3%)
view
Duplicated Units
The list of top 32 duplicated units.
See data for all 32 unit duplicates...
Size#FoldersFilesLinesCode
41 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
279:329 
279:329 
view
36 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
85:135 
85:135 
view
35 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
331:370 
331:370 
view
26 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
50:78 
50:78 
view
25 x 2 memory-types/ashmem/src/...ok/imagepipeline/memory
memory-types/simple/src/...ok/imagepipeline/memory
128:167 
96:135 
view
23 x 2 native-imagetranscoder/s.../native-imagetranscoder
static-webp/src/main/jni/static-webp
37:61 
37:61 
view
23 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
238:272 
238:272 
view
19 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
56:83 
56:83 
view
19 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
140:160 
140:160 
view
18 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
184:204 
179:199 
view
17 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
84:104 
84:104 
view
16 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
160:178 
155:173 
view
15 x 2 native-imagetranscoder/s.../native-imagetranscoder
static-webp/src/main/jni/static-webp
19:35 
19:35 
view
14 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
169:192 
169:192 
view
14 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
201:216 
201:216 
view
14 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
30:45 
30:45 
view
13 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
117:131 
117:131 
view
10 x 2 drawee/src/main/java/com/facebook/drawee/drawable
drawee/src/main/java/com/facebook/drawee/drawable
72:84 
141:153 
view
9 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
143:153 
143:153 
view
9 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
42:53 
42:53 
view
8 x 2 imagepipeline/src/main/j...imagepipeline/producers
imagepipeline/src/main/j...imagepipeline/producers
52:61 
42:51 
view
8 x 2 imagepipeline/src/main/j...imagepipeline/producers
imagepipeline/src/main/j...imagepipeline/producers
163:172 
224:233 
view
8 x 2 native-imagetranscoder/s.../native-imagetranscoder
static-webp/src/main/jni/static-webp
13:22 
13:22 
view
8 x 2 drawee/src/main/java/com/facebook/drawee/drawable
drawee/src/main/java/com/facebook/drawee/drawable
113:122 
128:137 
view
7 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
223:231 
223:231 
view
7 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
165:173 
165:173 
view
7 x 2 animated-gif-lite/src/ma...imated/giflite/drawable
animated-webp/src/main/j...k/animated/webpdrawable
162:171 
160:169 
view
6 x 2 imagepipeline/src/main/j...imagepipeline/producers
imagepipeline/src/main/j...imagepipeline/producers
35:42 
37:44 
view
6 x 2 imagepipeline/src/main/j.../imagepipeline/platform
imagepipeline-native/src...magepipeline/nativecode
71:78 
63:70 
view
6 x 2 native-imagetranscoder/s...ve-imagetranscoder/jpeg
static-webp/src/main/jni/static-webp/jpeg
54:63 
54:63 
view
6 x 2 animated-gif/src/main/jni/gifimage
static-webp/src/main/jni/static-webp
782:789 
240:247 
view
6 x 2 imagepipeline-backends/i...ipeline/backends/volley
imagepipeline-backends/i...peline/backends/okhttp3
120:127 
125:132 
view