android / media-samples
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
  • 41% duplication:
    • 6,978 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 2,873 duplicated lines
  • 49 duplicates
system41% (2,873 lines)
Duplication per Extension
java45% (2,853 lines)
kt2% (20 lines)
Duplication per Component (primary)
MidiScope86% (1,090 lines)
MidiSynth94% (1,090 lines)
MediaRouter11% (262 lines)
ScreenCapture50% (177 lines)
PictureInPicture17% (106 lines)
BasicMediaDecoder23% (64 lines)
MediaRecorder39% (64 lines)
PictureInPictureKotlin3% (20 lines)
BasicMediaRouter0% (0 lines)
VideoPlayer0% (0 lines)

Duplication Between Components (50+ lines)

G MidiScope MidiScope MidiSynth MidiSynth MidiScope--MidiSynth 2180 MediaRouter MediaRouter ScreenCapture ScreenCapture MediaRouter--ScreenCapture 354 BasicMediaDecoder BasicMediaDecoder MediaRecorder MediaRecorder BasicMediaDecoder--MediaRecorder 128

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 49 duplicates...
Size#FoldersFilesLinesCode
145 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
SynthEngine.java
SynthEngine.java
36:281 (100%)
36:281 (100%)
view
98 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiPortConnector.java
MidiPortConnector.java
32:197 (100%)
32:197 (100%)
view
94 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
EventScheduler.java
EventScheduler.java
31:241 (100%)
31:241 (100%)
view
85 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiPortSelector.java
MidiPortSelector.java
37:181 (100%)
37:181 (100%)
view
67 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiPortWrapper.java
MidiPortWrapper.java
24:122 (100%)
24:122 (100%)
view
64 x 2 BasicMediaDecoder/Applic...le/android/common/media
MediaRecorder/Applicatio...le/android/common/media
CameraHelper.java
CameraHelper.java
34:188 (100%)
34:188 (100%)
view
63 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
EnvelopeADSR.java
EnvelopeADSR.java
24:108 (100%)
24:108 (100%)
view
60 x 2 MediaRouter/Application/...e/android/common/logger
ScreenCapture/Applicatio...e/android/common/logger
LogView.java
LogView.java
25:141 (100%)
25:141 (100%)
view
55 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiFramer.java
MidiFramer.java
33:108 (100%)
33:108 (100%)
view
49 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiEventScheduler.java
MidiEventScheduler.java
26:116 (100%)
26:116 (100%)
view
46 x 2 MediaRouter/Application/...e/android/common/logger
ScreenCapture/Applicatio...e/android/common/logger
Log.java
Log.java
26:234 (100%)
26:234 (100%)
view
42 x 2 MediaRouter/Application/...e/android/common/logger
ScreenCapture/Applicatio...e/android/common/logger
LogFragment.java
LogFragment.java
49:107 (100%)
49:107 (100%)
view
42 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiConstants.java
MidiConstants.java
24:99 (100%)
24:99 (100%)
view
41 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
SimpleAudioOutput.java
SimpleAudioOutput.java
28:93 (100%)
28:93 (100%)
view
40 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiOutputPortSelector.java
MidiOutputPortSelector.java
34:100 (100%)
34:100 (100%)
view
39 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiEventThread.java
MidiEventThread.java
24:87 (100%)
24:87 (100%)
view
37 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiInputPortSelector.java
MidiInputPortSelector.java
34:90 (100%)
34:90 (100%)
view
33 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiOutputPortConnectionSelector.java
MidiOutputPortConnectionSelector.java
29:82 (100%)
29:82 (100%)
view
33 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
SawOscillator.java
SawOscillator.java
19:70 (100%)
19:70 (100%)
view
31 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
SynthVoice.java
SynthVoice.java
22:82 (100%)
22:82 (100%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 66 unit duplicates...
Size#FoldersFilesLinesCode
55 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiFramer.java
MidiFramer.java
49:110 
49:110 
view
43 x 2 MediaRouter/Application/...e/android/common/logger
ScreenCapture/Applicatio...e/android/common/logger
LogView.java
LogView.java
48:106 
48:106 
view
43 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiPortConnector.java
MidiPortConnector.java
109:153 
109:153 
view
33 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiPortConnector.java
MidiPortConnector.java
164:198 
164:198 
view
30 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiPortSelector.java
MidiPortSelector.java
54:89 
54:89 
view
26 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiPortSelector.java
MidiPortSelector.java
132:163 
132:163 
view
25 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
EnvelopeADSR.java
EnvelopeADSR.java
80:105 
80:105 
view
24 x 2 BasicMediaDecoder/Applic...le/android/common/media
MediaRecorder/Applicatio...le/android/common/media
CameraHelper.java
CameraHelper.java
155:189 
155:189 
view
24 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiPortWrapper.java
MidiPortWrapper.java
42:66 
42:66 
view
23 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
EventScheduler.java
EventScheduler.java
214:242 
214:242 
view
23 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
SynthEngine.java
SynthEngine.java
82:105 
82:105 
view
23 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiOutputPortSelector.java
MidiOutputPortSelector.java
50:76 
50:76 
view
22 x 2 MediaRouter/Application/...e/android/common/logger
ScreenCapture/Applicatio...e/android/common/logger
LogFragment.java
LogFragment.java
56:83 
56:83 
view
20 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiInputPortSelector.java
MidiInputPortSelector.java
50:71 
50:71 
view
16 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
SimpleAudioOutput.java
SimpleAudioOutput.java
57:74 
57:74 
view
16 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
SynthEngine.java
SynthEngine.java
110:126 
110:126 
view
16 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiEventThread.java
MidiEventThread.java
34:52 
34:52 
view
15 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
EventScheduler.java
EventScheduler.java
154:171 
154:171 
view
15 x 2 MidiScope/Application/sr...droid/common/midi/synth
MidiSynth/Application/sr...droid/common/midi/synth
SynthEngine.java
SynthEngine.java
230:245 
230:245 
view
15 x 2 MidiScope/Application/sr...ple/android/common/midi
MidiSynth/Application/sr...ple/android/common/midi
MidiEventScheduler.java
MidiEventScheduler.java
78:93 
78:93 
view