google / riegeli
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
  • 18% duplication:
    • 43,598 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 8,025 duplicated lines
  • 1,339 duplicates
system18% (8,025 lines)
Duplication per Extension
cc21% (4,770 lines)
h14% (2,989 lines)
bzl33% (194 lines)
proto54% (60 lines)
py7% (12 lines)
Duplication per Component (primary)
riegeli/bytes29% (4,550 lines)
python/riegeli18% (679 lines)
riegeli/snappy21% (433 lines)
riegeli/base6% (398 lines)
riegeli/chunk_encoding10% (370 lines)
riegeli/records7% (281 lines)
riegeli/tensorflow21% (253 lines)
riegeli/csv11% (233 lines)
riegeli/zlib21% (219 lines)
riegeli/brotli17% (177 lines)
riegeli/zstd14% (161 lines)
tf_dependency48% (97 lines)
riegeli/ordered_varint26% (66 lines)
riegeli/varint16% (56 lines)
riegeli/lines14% (36 lines)
riegeli/messages3% (16 lines)
ROOT0% (0 lines)
python0% (0 lines)
riegeli/endian0% (0 lines)

Duplication Between Components (50+ lines)

G riegeli/bytes riegeli/bytes riegeli/tensorflow riegeli/tensorflow riegeli/bytes--riegeli/tensorflow 439 riegeli/snappy riegeli/snappy riegeli/bytes--riegeli/snappy 377 riegeli/zstd riegeli/zstd riegeli/bytes--riegeli/zstd 352 riegeli/zlib riegeli/zlib riegeli/bytes--riegeli/zlib 340 riegeli/records riegeli/records riegeli/bytes--riegeli/records 250 riegeli/csv riegeli/csv riegeli/bytes--riegeli/csv 156 riegeli/snappy--riegeli/zstd 198 riegeli/snappy--riegeli/zlib 180 riegeli/zlib--riegeli/zstd 238 riegeli/brotli riegeli/brotli riegeli/brotli--riegeli/bytes 304 riegeli/brotli--riegeli/snappy 262 riegeli/brotli--riegeli/zstd 202 riegeli/brotli--riegeli/zlib 190 riegeli/brotli--riegeli/records 51 riegeli/records--riegeli/snappy 91 riegeli/records--riegeli/zlib 51 riegeli/records--riegeli/zstd 51 python/riegeli python/riegeli python/riegeli--riegeli/bytes 217 tf_dependency tf_dependency python/riegeli--tf_dependency 194 python/riegeli--riegeli/records 78 python/riegeli--riegeli/zstd 57 python/riegeli--riegeli/zlib 51 riegeli/csv--riegeli/snappy 86 riegeli/csv--riegeli/records 59

Download: SVG DOT (open online Graphviz editor)

Open 3D force graph...

Show more details on duplication between components...
Longest Duplicates
The list of 20 longest duplicates.
See data for all 1,339 duplicates...
Size#FoldersFilesLinesCode
39 x 2 riegeli/bytes
riegeli/bytes
limiting_reader.h
limiting_writer.h
45:149 (12%)
43:140 (14%)
view
39 x 2 riegeli/bytes
riegeli/bytes
limiting_backward_writer.h
limiting_writer.h
41:138 (14%)
43:140 (14%)
view
39 x 2 riegeli/bytes
riegeli/bytes
limiting_backward_writer.h
limiting_reader.h
41:138 (14%)
45:149 (12%)
view
36 x 2 riegeli/tensorflow/io
riegeli/tensorflow/io
file_reader.cc
file_reader.cc
280:326 (9%)
336:382 (9%)
view
35 x 2 riegeli/bytes
riegeli/bytes
reader_factory.cc
reader_factory.cc
221:265 (9%)
279:323 (9%)
view
33 x 2 riegeli/bytes
riegeli/bytes
buffered_reader.cc
buffered_reader.cc
160:199 (12%)
209:248 (12%)
view
30 x 2 python/riegeli/records
riegeli/records
proto
records_metadata.proto
records_metadata.proto
1:38 (100%)
1:38 (100%)
view
29 x 2 riegeli/chunk_encoding
riegeli/chunk_encoding
transpose_encoder.cc
transpose_encoder.cc
945:1011 (3%)
1027:1061 (3%)
view
27 x 2 riegeli/zlib
riegeli/zlib
zlib_reader.cc
zlib_writer.cc
100:128 (12%)
118:146 (14%)
view
26 x 2 riegeli/bytes
riegeli/bytes
pullable_reader.cc
reader.cc
223:251 (6%)
161:189 (7%)
view
25 x 2 python/riegeli
tf_dependency
python_configure.bzl
tf_configure.bzl
120:146 (7%)
142:168 (13%)
view
25 x 2 riegeli/bytes
riegeli/bytes
chain_backward_writer.h
cord_backward_writer.h
37:95 (10%)
39:97 (10%)
view
25 x 2 riegeli/bytes
riegeli/bytes
chain_writer.h
cord_writer.h
41:98 (10%)
43:100 (10%)
view
24 x 2 riegeli/csv
riegeli/csv
csv_reader.h
csv_writer.h
109:156 (7%)
112:159 (8%)
view
24 x 2 riegeli/bytes
riegeli/bytes
chain_reader.cc
chain_reader.cc
75:101 (13%)
113:139 (13%)
view
23 x 2 riegeli/bytes
riegeli/bytes
reader.cc
reader.cc
339:365 (6%)
370:396 (6%)
view
22 x 2 python/riegeli
tf_dependency
python_configure.bzl
tf_configure.bzl
92:115 (6%)
103:126 (11%)
view
22 x 2 riegeli/brotli
riegeli/brotli
brotli_reader.h
brotli_writer.h
48:80 (10%)
107:139 (7%)
view
21 x 2 riegeli/ordered_varint
riegeli/ordered_varint
ordered_varint_reading.cc
ordered_varint_reading.cc
33:53 (20%)
70:90 (20%)
view
20 x 2 riegeli/records
riegeli/records
chunk_reader.cc
chunk_reader.cc
113:135 (5%)
224:246 (5%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 82 unit duplicates...
Size#FoldersFilesLinesCode
48 x 2 riegeli/tensorflow/io
riegeli/tensorflow/io
file_reader.cc
file_reader.cc
273:327 
329:383 
view
43 x 2 riegeli/bytes
riegeli/bytes
buffered_reader.cc
buffered_reader.cc
153:200 
202:249 
view
36 x 2 riegeli/bytes
riegeli/bytes
chain_reader.cc
chain_reader.cc
66:102 
104:140 
view
29 x 2 riegeli/bytes
riegeli/bytes
reader.cc
reader.cc
338:367 
369:398 
view
24 x 2 riegeli/bytes
riegeli/bytes
pullable_reader.cc
pullable_reader.cc
367:391 
393:417 
view
21 x 2 riegeli/bytes
riegeli/bytes
joining_reader.cc
splitting_writer.cc
75:96 
90:111 
view
19 x 2 riegeli/snappy/framed
riegeli/snappy/hadoop
framed_snappy_writer.cc
hadoop_snappy_writer.cc
92:111 
71:90 
view
17 x 2 riegeli/bytes
riegeli/bytes
chain_backward_writer.cc
chain_backward_writer.cc
54:71 
92:109 
view
17 x 2 riegeli/bytes
riegeli/bytes
chain_backward_writer.cc
chain_backward_writer.cc
73:90 
130:147 
view
17 x 2 riegeli/bytes
riegeli/bytes
chain_writer.cc
chain_writer.cc
57:74 
95:112 
view
17 x 2 riegeli/bytes
riegeli/bytes
chain_writer.cc
chain_writer.cc
76:93 
114:131 
view
16 x 2 riegeli/bytes
riegeli/bytes
pushable_backward_writer.cc
pushable_writer.cc
381:398 
375:392 
view
16 x 2 riegeli/snappy
riegeli/snappy
snappy_writer.cc
snappy_writer.cc
149:168 
186:205 
view
15 x 2 riegeli/chunk_encoding
riegeli/chunk_encoding
chunk_decoder.h
chunk_decoder.h
216:231 
233:248 
view
15 x 2 riegeli/chunk_encoding
riegeli/chunk_encoding
chunk_decoder.h
chunk_decoder.h
233:248 
216:231 
view
15 x 2 riegeli/snappy/framed
riegeli/snappy/hadoop
framed_snappy_reader.cc
hadoop_snappy_reader.cc
257:274 
195:212 
view
14 x 2 riegeli/bytes
riegeli/bytes
fd_reader.cc
fd_reader.cc
97:113 
345:361 
view
14 x 2 riegeli/snappy
riegeli/snappy
snappy_writer.cc
snappy_writer.cc
102:116 
170:184 
view
12 x 2 python/riegeli/bytes
python/riegeli/bytes
python_reader.cc
python_writer.cc
96:109 
95:108 
view
12 x 3 riegeli/bytes
riegeli/bytes
riegeli/bytes
null_backward_writer.cc
null_backward_writer.cc
null_writer.cc
39:51 
53:65 
38:50 
view