android / games-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
  • 47% duplication:
    • 56,751 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 26,960 duplicated lines
  • 118,352 duplicates
system47% (26,960 lines)
Duplication per Extension
unity55% (15,333 lines)
cpp46% (4,862 lines)
vcxproj71% (1,940 lines)
inl30% (1,696 lines)
hpp66% (1,455 lines)
anim90% (623 lines)
gd19% (284 lines)
S79% (140 lines)
vsh100% (114 lines)
h7% (113 lines)
proto49% (102 lines)
java9% (99 lines)
fsh100% (86 lines)
filters15% (83 lines)
cs1% (18 lines)
cmake5% (12 lines)
Duplication per Component (primary)
trivialkart/trivialkart-unity/Assets54% (15,974 lines)
agdk/agde/endless-tunnel73% (3,886 lines)
agdk/agdktunnel/app60% (3,546 lines)
agdk/agde/Teapot13% (1,118 lines)
agdk/agde/AssemblyCode-Link-Objects67% (724 lines)
agdk/game_controller/gameactivity87% (466 lines)
agdk/game_controller/nativeactivity94% (399 lines)
trivialkart/trivialkart-godot/Scripts19% (284 lines)
agdk/game_controller/common14% (275 lines)
agdk/agde/HelloJNI47% (263 lines)
agdk/util/tuningfork1% (13 lines)
agdk/util/protobuf5% (12 lines)
trivialkart/trivialkart-unity/ProjectSettings0% (0 lines)
trivialkart/trivialkart-godot0% (0 lines)
agdk/common/include0% (0 lines)
agdk/common/src0% (0 lines)

Duplication Between Components (50+ lines)

G agdk/agde/endless-tunnel agdk/agde/endless-tunnel agdk/agdktunnel/app agdk/agdktunnel/app agdk/agde/endless-tunnel--agdk/agdktunnel/app 6239 agdk/game_controller/gameactivity agdk/game_controller/gameactivity agdk/agde/endless-tunnel--agdk/game_controller/gameactivity 347 agdk/game_controller/nativeactivity agdk/game_controller/nativeactivity agdk/agde/endless-tunnel--agdk/game_controller/nativeactivity 394 agdk/game_controller/common agdk/game_controller/common agdk/agde/endless-tunnel--agdk/game_controller/common 330 agdk/agdktunnel/app--agdk/game_controller/gameactivity 796 agdk/agdktunnel/app--agdk/game_controller/nativeactivity 635 agdk/agdktunnel/app--agdk/game_controller/common 406 agdk/game_controller/gameactivity--agdk/game_controller/nativeactivity 761 agdk/agde/Teapot agdk/agde/Teapot agdk/agde/Teapot--agdk/agde/endless-tunnel 615 agdk/agde/HelloJNI agdk/agde/HelloJNI agdk/agde/HelloJNI--agdk/agde/endless-tunnel 507 agdk/agde/HelloJNI--agdk/agde/Teapot 356 agdk/agde/AssemblyCode-Link-Objects agdk/agde/AssemblyCode-Link-Objects agdk/agde/AssemblyCode-Link-Objects--agdk/agde/endless-tunnel 358 agdk/agde/AssemblyCode-Link-Objects--agdk/agdktunnel/app 153 agdk/agde/AssemblyCode-Link-Objects--agdk/agde/Teapot 226 agdk/agde/AssemblyCode-Link-Objects--agdk/agde/HelloJNI 195 agdk/util/tuningfork agdk/util/tuningfork agdk/agde/AssemblyCode-Link-Objects--agdk/util/tuningfork 99 agdk/util/protobuf agdk/util/protobuf trivialkart/trivialkart-godot/Scripts trivialkart/trivialkart-godot/Scripts agdk/util/protobuf--trivialkart/trivialkart-godot/Scripts 228

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 118,352 duplicates...
Size#FoldersFilesLinesCode
691 x 2 agdk/agde/endless-tunnel...d/app/src/main/cpp/data
agdk/agdktunnel/app/src/main/cpp/data
inl
alphabet.inl
alphabet.inl
69:759 (93%)
78:768 (92%)
view
194 x 2 agdk/game_controller/gameactivity/app/src/main/cpp
agdk/game_controller/nat...tivity/app/src/main/cpp
native_engine.cpp
native_engine.cpp
408:724 (43%)
284:600 (52%)
view
149 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
ui_scene.cpp
ui_scene.cpp
108:350 (76%)
109:351 (76%)
view
93 x 2 agdk/agdktunnel/app/src/main/cpp
agdk/game_controller/nat...tivity/app/src/main/cpp
native_engine.cpp
native_engine.cpp
613:745 (18%)
425:557 (25%)
view
93 x 2 agdk/agdktunnel/app/src/main/cpp
agdk/game_controller/gameactivity/app/src/main/cpp
native_engine.cpp
native_engine.cpp
613:745 (18%)
549:681 (20%)
view
77 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
obstacle_generator.cpp
obstacle_generator.cpp
92:182 (55%)
92:182 (55%)
view
74 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
dialog_scene.cpp
dialog_scene.cpp
46:150 (89%)
48:152 (88%)
view
67 x 2 agdk/game_controller/gameactivity/app/src/main/cpp
agdk/game_controller/nat...tivity/app/src/main/cpp
native_engine.cpp
native_engine.cpp
255:336 (14%)
161:242 (18%)
view
62 x 2 agdk/agdktunnel/app/src/main/cpp
agdk/game_controller/common
scene_manager.cpp
scene_manager.cpp
21:134 (70%)
21:134 (91%)
view
61 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
play_scene.cpp
play_scene.cpp
282:397 (11%)
308:423 (11%)
view
60 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
obstacle_generator.cpp
obstacle_generator.cpp
20:90 (43%)
20:90 (43%)
view
58 x 2 agdk/agde/AssemblyCode-L...semblyCode-Link-Objects
agdk/agde/AssemblyCode-Link-Objects/StaticLib
vcxproj
AssemblyCode-Link-Objects.vcxproj
StaticLib.vcxproj
151:235 (13%)
151:235 (13%)
view
56 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
play_scene.hpp
play_scene.hpp
65:193 (49%)
82:210 (48%)
view
55 x 2 agdk/agde/Teapot/GameApplication/Shaders
agdk/agde/Teapot/GameApp...src/main/assets/Shaders
vsh
VS_ShaderPlain.vsh
VS_ShaderPlain.vsh
5:72 (93%)
1:68 (100%)
view
55 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
tex_quad.hpp
tex_quad.hpp
23:89 (100%)
24:109 (100%)
view
51 x 2 agdk/agdktunnel/app/src/main/cpp
agdk/game_controller/common
util.hpp
util.hpp
32:119 (91%)
31:118 (91%)
view
51 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
play_scene.cpp
play_scene.cpp
797:868 (9%)
820:891 (9%)
view
46 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
play_scene.cpp
play_scene.cpp
659:725 (8%)
684:750 (8%)
view
44 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
play_scene.cpp
play_scene.cpp
464:539 (8%)
490:565 (8%)
view
42 x 2 trivialkart/trivialkart-unity/Assets/Scenes
trivialkart/trivialkart-unity/Assets/Scenes
TrivialKartScene.unity
TrivialKartScene.unity
3771:3812 (<1%)
10468:10509 (<1%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 68 unit duplicates...
Size#FoldersFilesLinesCode
40 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
obstacle_generator.cpp
obstacle_generator.cpp
144:184 
144:184 
view
40 x 2 agdk/game_controller/nat...tivity/app/src/main/cpp
agdk/game_controller/gameactivity/app/src/main/cpp
native_engine.cpp
native_engine.cpp
529:587 
653:711 
view
36 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
obstacle.cpp
obstacle.cpp
21:65 
21:65 
view
36 x 2 agdk/game_controller/nat...tivity/app/src/main/cpp
agdk/game_controller/gameactivity/app/src/main/cpp
native_engine.cpp
native_engine.cpp
372:426 
496:550 
view
34 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
ui_scene.cpp
ui_scene.cpp
231:270 
232:271 
view
32 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
ui_scene.cpp
ui_scene.cpp
304:348 
305:349 
view
27 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
anim.cpp
anim.cpp
19:50 
20:51 
view
26 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
dialog_scene.cpp
dialog_scene.cpp
120:152 
122:154 
view
25 x 2 agdk/game_controller/nat...tivity/app/src/main/cpp
agdk/game_controller/gameactivity/app/src/main/cpp
native_engine.cpp
native_engine.cpp
300:337 
424:461 
view
24 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
ui_scene.cpp
ui_scene.cpp
111:149 
112:150 
view
24 x 2 agdk/game_controller/nat...tivity/app/src/main/cpp
agdk/game_controller/gameactivity/app/src/main/cpp
native_engine.cpp
native_engine.cpp
253:278 
119:144 
view
24 x 3 agdk/game_controller/nat...tivity/app/src/main/cpp
agdk/game_controller/gameactivity/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
native_engine.cpp
native_engine.cpp
native_engine.cpp
475:500 
599:624 
663:688 
view
24 x 3 agdk/game_controller/nat...tivity/app/src/main/cpp
agdk/game_controller/gameactivity/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
native_engine.cpp
native_engine.cpp
native_engine.cpp
502:526 
626:650 
690:714 
view
23 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
obstacle_generator.cpp
obstacle_generator.cpp
119:142 
119:142 
view
23 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
dialog_scene.cpp
dialog_scene.cpp
71:98 
73:100 
view
22 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
ui_scene.cpp
ui_scene.cpp
280:302 
281:303 
view
20 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
obstacle_generator.cpp
obstacle_generator.cpp
96:117 
96:117 
view
20 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
tex_quad.cpp
tex_quad.cpp
81:105 
82:106 
view
19 x 2 agdk/agde/endless-tunnel...ndroid/app/src/main/cpp
agdk/agdktunnel/app/src/main/cpp
play_scene.cpp
play_scene.cpp
823:844 
846:867 
view
18 x 2 agdk/game_controller/common
agdk/agdktunnel/app/src/main/cpp
scene_manager.cpp
scene_manager.cpp
40:66 
40:66 
view