aws-samples / amazon-kinesis-video-streams-demos
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
  • 17% duplication:
    • 8,054 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,435 duplicated lines
  • 96 duplicates
system17% (1,435 lines)
Duplication per Extension
java48% (710 lines)
groovy52% (421 lines)
cpp7% (180 lines)
cmake64% (86 lines)
c1% (26 lines)
js2% (12 lines)
Duplication per Component (primary)
parser-java/kvs-archived-media-rekognition-label-detection-sample/src70% (251 lines)
canary/webrtc-c/jobs55% (220 lines)
canary/producer-c/jobs50% (201 lines)
parser-java/kvs-archived-media-parallel-processing-image-rekognition-sample/src61% (194 lines)
parser-java/kvs-archived-media-retrieval-sample/src70% (144 lines)
parser-java/label-detection-web-app/src15% (133 lines)
canary/webrtc-c/src6% (108 lines)
canary/producer-c/canary8% (72 lines)
gst/gst-kvs-plugin/CMake50% (43 lines)
canary/producer-c/CMake89% (43 lines)
gst/gst-kvs-plugin/src1% (26 lines)
producer-js/browser-based-ingestion/src0% (0 lines)
canary/consumer-java/src0% (0 lines)

Duplication Between Components (50+ lines)

G canary/producer-c/jobs canary/producer-c/jobs canary/webrtc-c/jobs canary/webrtc-c/jobs canary/producer-c/jobs--canary/webrtc-c/jobs 314 parser-java/kvs-archived-media-rekognition-label-detection-sample/src parser-java/kvs-archived-media-rekognition-label-detection-sample/src parser-java/kvs-archived-media-retrieval-sample/src parser-java/kvs-archived-media-retrieval-sample/src parser-java/kvs-archived-media-rekognition-label-detection-sample/src--parser-java/kvs-archived-media-retrieval-sample/src 288 parser-java/label-detection-web-app/src parser-java/label-detection-web-app/src parser-java/kvs-archived-media-rekognition-label-detection-sample/src--parser-java/label-detection-web-app/src 84 parser-java/kvs-archived-media-parallel-processing-image-rekognition-sample/src parser-java/kvs-archived-media-parallel-processing-image-rekognition-sample/src parser-java/kvs-archived-media-parallel-processing-image-rekognition-sample/src--parser-java/kvs-archived-media-rekognition-label-detection-sample/src 222 parser-java/kvs-archived-media-parallel-processing-image-rekognition-sample/src--parser-java/kvs-archived-media-retrieval-sample/src 58 parser-java/kvs-archived-media-parallel-processing-image-rekognition-sample/src--parser-java/label-detection-web-app/src 180 canary/producer-c/CMake canary/producer-c/CMake gst/gst-kvs-plugin/CMake gst/gst-kvs-plugin/CMake canary/producer-c/CMake--gst/gst-kvs-plugin/CMake 86 canary/producer-c/canary canary/producer-c/canary canary/webrtc-c/src canary/webrtc-c/src canary/producer-c/canary--canary/webrtc-c/src 84

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 96 duplicates...
Size#FoldersFilesLinesCode
49 x 2 parser-java/kvs-archived...ws/kinesisvideo/workers
parser-java/kvs-archived...ws/kinesisvideo/workers
ListFragmentWorker.java
ListFragmentWorker.java
24:90 (89%)
22:88 (84%)
view
47 x 2 parser-java/kvs-archived.../kinesisvideo/utilities
parser-java/kvs-archived.../kinesisvideo/utilities
H264FrameLabelDetector.java
H264FrameLabelDetector.java
95:165 (51%)
93:162 (52%)
view
43 x 2 canary/producer-c/CMake
gst/gst-kvs-plugin/CMake
cmake
Utilities.cmake
Utilities.cmake
6:54 (89%)
6:54 (89%)
view
37 x 2 canary/producer-c/jobs
canary/webrtc-c/jobs
orchestrator.groovy
orchestrator.groovy
63:120 (21%)
56:121 (21%)
view
33 x 2 parser-java/kvs-archived...ws/kinesisvideo/workers
parser-java/kvs-archived...ws/kinesisvideo/workers
GetMediaForFragmentListBatchWorker.java
GetMediaForFragmentListBatchWorker.java
28:66 (66%)
29:67 (64%)
view
26 x 2 canary/producer-c/jobs
canary/webrtc-c/jobs
orchestrator.groovy
orchestrator.groovy
23:59 (15%)
15:52 (15%)
view
24 x 2 parser-java/kvs-archived.../kinesisvideo/utilities
parser-java/kvs-archived.../kinesisvideo/utilities
H264FrameLabelDetector.java
H264FrameLabelDetector.java
44:81 (26%)
43:80 (26%)
view
21 x 2 canary/producer-c/jobs
canary/webrtc-c/jobs
canary_seed.groovy
seed.groovy
13:38 (37%)
11:36 (43%)
view
20 x 2 parser-java/kvs-archived.../amazonaws/kinesisvideo
parser-java/label-detect...ctionwebapp/kvsservices
KinesisVideoArchivedParallelProcessin...
GetArchivedMedia.java
95:128 (25%)
110:143 (16%)
view
16 x 2 parser-java/kvs-archived...ws/kinesisvideo/workers
parser-java/label-detect...ctionwebapp/kvsservices
GetMediaArchivedRekognitionWorker.java
GetMediaArchivedRekognitionWorker.java
45:64 (20%)
52:71 (18%)
view
16 x 2 canary/producer-c/jobs
canary/webrtc-c/jobs
orchestrator.groovy
orchestrator.groovy
196:219 (9%)
209:232 (9%)
view
15 x 2 canary/webrtc-c/src
canary/webrtc-c/src
CanarySignaling.cpp
CanaryWebrtc.cpp
42:70 (5%)
56:84 (5%)
view
15 x 2 canary/producer-c/jobs
canary/producer-c/jobs
orchestrator.groovy
orchestrator.groovy
127:142 (8%)
160:174 (8%)
view
14 x 2 canary/producer-c/canary
canary/webrtc-c/src
CanaryStreamUtils.cpp
CloudwatchMonitoring.cpp
118:132 (4%)
32:46 (8%)
view
14 x 2 parser-java/kvs-archived.../amazonaws/kinesisvideo
parser-java/kvs-archived.../amazonaws/kinesisvideo
KinesisVideoArchivedDetectLabelsExamp...
KinesisVideoRendererArchivedExample.java
56:72 (30%)
55:72 (26%)
view
13 x 2 parser-java/kvs-archived.../amazonaws/kinesisvideo
parser-java/kvs-archived.../amazonaws/kinesisvideo
App.java
App.java
18:34 (20%)
19:35 (27%)
view
13 x 2 canary/producer-c/canary
canary/webrtc-c/src
CanaryLogsUtils.cpp
Cloudwatch.cpp
89:104 (17%)
64:79 (24%)
view
13 x 2 parser-java/kvs-archived.../amazonaws/kinesisvideo
parser-java/kvs-archived.../amazonaws/kinesisvideo
App.java
App.java
40:55 (20%)
37:52 (27%)
view
12 x 2 canary/producer-c/jobs
canary/producer-c/jobs
orchestrator.groovy
orchestrator.groovy
163:174 (7%)
179:190 (7%)
view
12 x 2 canary/producer-c/jobs
canary/producer-c/jobs
orchestrator.groovy
orchestrator.groovy
126:138 (7%)
143:154 (7%)
view
Duplicated Units
The list of top 17 duplicated units.
See data for all 17 unit duplicates...
Size#FoldersFilesLinesCode
21 x 2 parser-java/kvs-archived.../amazonaws/kinesisvideo
parser-java/label-detect...ctionwebapp/kvsservices
KinesisVideoArchivedParallelProcessin...
GetArchivedMedia.java
95:129 
110:144 
view
15 x 2 parser-java/kvs-archived.../kinesisvideo/utilities
parser-java/kvs-archived.../kinesisvideo/utilities
H264FrameLabelDetector.java
H264FrameLabelDetector.java
106:125 
109:128 
view
15 x 2 parser-java/kvs-archived.../kinesisvideo/utilities
parser-java/kvs-archived.../kinesisvideo/utilities
H264FrameLabelDetector.java
H264FrameLabelDetector.java
127:145 
130:148 
view
15 x 2 parser-java/kvs-archived.../kinesisvideo/utilities
parser-java/kvs-archived.../kinesisvideo/utilities
H264FrameLabelDetector.java
H264FrameLabelDetector.java
147:164 
150:167 
view
14 x 2 canary/producer-c/jobs
canary/webrtc-c/jobs
runner.groovy
runner.groovy
41:56 
35:50 
view
14 x 2 parser-java/kvs-archived.../kinesisvideo/utilities
parser-java/kvs-archived.../kinesisvideo/utilities
H264FrameLabelDetector.java
H264FrameLabelDetector.java
44:63 
45:64 
view
13 x 2 canary/webrtc-c/src
canary/webrtc-c/src
CloudwatchMonitoring.cpp
CloudwatchMonitoring.cpp
120:137 
139:156 
view
13 x 2 parser-java/kvs-archived.../amazonaws/kinesisvideo
parser-java/label-detect...ctionwebapp/kvsservices
KinesisVideoArchivedParallelProcessin...
GetArchivedMedia.java
39:52 
47:60 
view
11 x 2 parser-java/kvs-archived...ws/kinesisvideo/workers
parser-java/kvs-archived...ws/kinesisvideo/workers
ListFragmentWorker.java
ListFragmentWorker.java
30:42 
28:40 
view
11 x 2 parser-java/kvs-archived...ws/kinesisvideo/workers
parser-java/kvs-archived...ws/kinesisvideo/workers
GetMediaForFragmentListBatchWorker.java
GetMediaForFragmentListBatchWorker.java
28:40 
29:41 
view
10 x 2 canary/producer-c/jobs
canary/webrtc-c/jobs
orchestrator.groovy
orchestrator.groovy
35:46 
28:39 
view
10 x 2 parser-java/kvs-archived...ws/kinesisvideo/workers
parser-java/kvs-archived...ws/kinesisvideo/workers
ListFragmentWorker.java
ListFragmentWorker.java
44:55 
42:53 
view
10 x 2 parser-java/kvs-archived...ws/kinesisvideo/workers
parser-java/kvs-archived...ws/kinesisvideo/workers
GetMediaForFragmentListBatchWorker.java
GetMediaForFragmentListBatchWorker.java
42:52 
43:53 
view
8 x 2 canary/producer-c/jobs
canary/webrtc-c/jobs
canary_seed.groovy
seed.groovy
13:21 
11:19 
view
7 x 2 canary/producer-c/jobs
canary/webrtc-c/jobs
orchestrator.groovy
orchestrator.groovy
25:33 
17:26 
view
7 x 2 canary/webrtc-c/src
canary/webrtc-c/src
CloudwatchMonitoring.cpp
CloudwatchMonitoring.cpp
158:167 
179:188 
view
6 x 2 canary/producer-c/canary
canary/webrtc-c/src
KvsProducerSampleCloudwatch.cpp
Config.cpp
42:48 
38:45 
view