android / views-widgets-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
  • 30% duplication:
    • 8,163 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 2,495 duplicated lines
  • 123 duplicates
system30% (2,495 lines)
Duplication per Extension
java39% (2,247 lines)
kt10% (248 lines)
Duplication per Component (primary)
ConstraintLayoutExamples19% (749 lines)
SwipeRefreshMultipleViews91% (661 lines)
SwipeRefreshLayoutBasic96% (661 lines)
RecyclerView69% (234 lines)
MultiWindowPlayground50% (164 lines)
ViewPager22% (14 lines)
AnimationsInterpolatorPlayground2% (12 lines)
MultiWindowPlaygroundKotlin0% (0 lines)
RecyclerViewKotlin0% (0 lines)
DataBindingDataBoundRecyclerView0% (0 lines)
SimpleTransition0% (0 lines)
CardView0% (0 lines)
WebView0% (0 lines)
CardViewKotlin0% (0 lines)
RecyclerViewSimple0% (0 lines)
DataBindingDataBoundList0% (0 lines)

Duplication Between Components (50+ lines)

G SwipeRefreshLayoutBasic SwipeRefreshLayoutBasic SwipeRefreshMultipleViews SwipeRefreshMultipleViews SwipeRefreshLayoutBasic--SwipeRefreshMultipleViews 1322 RecyclerView RecyclerView RecyclerView--SwipeRefreshLayoutBasic 468 RecyclerView--SwipeRefreshMultipleViews 468 MultiWindowPlayground MultiWindowPlayground MultiWindowPlayground--SwipeRefreshLayoutBasic 328 MultiWindowPlayground--SwipeRefreshMultipleViews 328 MultiWindowPlayground--RecyclerView 328

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 123 duplicates...
Size#FoldersFilesLinesCode
145 x 2 SwipeRefreshLayoutBasic/...ndroid/common/dummydata
SwipeRefreshMultipleView...ndroid/common/dummydata
Cheeses.java
Cheeses.java
26:184 (100%)
26:184 (100%)
view
123 x 2 SwipeRefreshLayoutBasic/...ple/android/common/view
SwipeRefreshMultipleView...ple/android/common/view
SlidingTabLayout.java
SlidingTabLayout.java
48:308 (100%)
48:308 (100%)
view
110 x 2 SwipeRefreshLayoutBasic/...ple/android/common/view
SwipeRefreshMultipleView...ple/android/common/view
SlidingTabStrip.java
SlidingTabStrip.java
29:205 (100%)
29:205 (100%)
view
60 x 2 RecyclerView/Application...e/android/common/logger
SwipeRefreshLayoutBasic/...e/android/common/logger
LogView.java
LogView.java
25:141 (100%)
25:141 (100%)
view
60 x 2 RecyclerView/Application...e/android/common/logger
SwipeRefreshMultipleView...e/android/common/logger
LogView.java
LogView.java
25:141 (100%)
25:141 (100%)
view
60 x 2 SwipeRefreshLayoutBasic/...e/android/common/logger
SwipeRefreshMultipleView...e/android/common/logger
LogView.java
LogView.java
25:141 (100%)
25:141 (100%)
view
46 x 2 MultiWindowPlayground/Ap...e/android/common/logger
RecyclerView/Application...e/android/common/logger
Log.java
Log.java
26:236 (100%)
26:234 (100%)
view
46 x 2 SwipeRefreshLayoutBasic/...e/android/common/logger
SwipeRefreshMultipleView...e/android/common/logger
Log.java
Log.java
26:234 (100%)
26:234 (100%)
view
46 x 2 MultiWindowPlayground/Ap...e/android/common/logger
SwipeRefreshLayoutBasic/...e/android/common/logger
Log.java
Log.java
26:236 (100%)
26:234 (100%)
view
46 x 2 RecyclerView/Application...e/android/common/logger
SwipeRefreshLayoutBasic/...e/android/common/logger
Log.java
Log.java
26:234 (100%)
26:234 (100%)
view
46 x 2 RecyclerView/Application...e/android/common/logger
SwipeRefreshMultipleView...e/android/common/logger
Log.java
Log.java
26:234 (100%)
26:234 (100%)
view
46 x 2 MultiWindowPlayground/Ap...e/android/common/logger
SwipeRefreshMultipleView...e/android/common/logger
Log.java
Log.java
26:236 (100%)
26:234 (100%)
view
42 x 2 SwipeRefreshLayoutBasic/...e/android/common/logger
SwipeRefreshMultipleView...e/android/common/logger
LogFragment.java
LogFragment.java
49:107 (100%)
49:107 (100%)
view
42 x 2 RecyclerView/Application...e/android/common/logger
SwipeRefreshLayoutBasic/...e/android/common/logger
LogFragment.java
LogFragment.java
49:107 (100%)
49:107 (100%)
view
42 x 2 RecyclerView/Application...e/android/common/logger
SwipeRefreshMultipleView...e/android/common/logger
LogFragment.java
LogFragment.java
49:107 (100%)
49:107 (100%)
view
37 x 2 ConstraintLayoutExamples...utexample/histogramdemo
ConstraintLayoutExamples...utexample/histogramdemo
HistogramWidget.kt
NonAnimatingHistogramWidget.kt
196:250 (29%)
134:188 (43%)
view
36 x 2 ConstraintLayoutExamples...utexample/fragmentsdemo
ConstraintLayoutExamples...utexample/fragmentsdemo
FragmentExample2Activity.kt
FragmentExampleActivity.kt
53:106 (65%)
53:103 (64%)
view
35 x 2 RecyclerView/Application...le/android/recyclerview
SwipeRefreshMultipleView...iperefreshmultipleviews
MainActivity.java
MainActivity.java
54:108 (77%)
54:108 (77%)
view
35 x 2 SwipeRefreshLayoutBasic/...swiperefreshlayoutbasic
SwipeRefreshMultipleView...iperefreshmultipleviews
MainActivity.java
MainActivity.java
54:108 (77%)
54:108 (77%)
view
35 x 2 RecyclerView/Application...le/android/recyclerview
SwipeRefreshLayoutBasic/...swiperefreshlayoutbasic
MainActivity.java
MainActivity.java
54:108 (77%)
54:108 (77%)
view
Duplicated Units
The list of top 20 duplicated units.
See data for all 23 unit duplicates...
Size#FoldersFilesLinesCode
43 x 3 SwipeRefreshMultipleView...e/android/common/logger
SwipeRefreshLayoutBasic/...e/android/common/logger
RecyclerView/Application...e/android/common/logger
LogView.java
LogView.java
LogView.java
48:106 
48:106 
48:106 
view
35 x 2 SwipeRefreshMultipleView...ple/android/common/view
SwipeRefreshLayoutBasic/...ple/android/common/view
SlidingTabStrip.java
SlidingTabStrip.java
117:163 
117:163 
view
22 x 3 SwipeRefreshMultipleView...e/android/common/logger
SwipeRefreshLayoutBasic/...e/android/common/logger
RecyclerView/Application...e/android/common/logger
LogFragment.java
LogFragment.java
LogFragment.java
56:83 
56:83 
56:83 
view
21 x 2 SwipeRefreshMultipleView...ple/android/common/view
SwipeRefreshLayoutBasic/...ple/android/common/view
SlidingTabLayout.java
SlidingTabLayout.java
197:225 
197:225 
view
18 x 2 ConstraintLayoutExamples...utexample/fragmentsdemo
ConstraintLayoutExamples...utexample/fragmentsdemo
FragmentExampleActivity.kt
FragmentExample2Activity.kt
88:106 
91:109 
view
17 x 2 SwipeRefreshMultipleView...ple/android/common/view
SwipeRefreshLayoutBasic/...ple/android/common/view
SlidingTabLayout.java
SlidingTabLayout.java
171:195 
171:195 
view
15 x 2 SwipeRefreshMultipleView...ple/android/common/view
SwipeRefreshLayoutBasic/...ple/android/common/view
SlidingTabLayout.java
SlidingTabLayout.java
259:277 
259:277 
view
14 x 3 SwipeRefreshMultipleView...e/android/common/logger
SwipeRefreshLayoutBasic/...e/android/common/logger
RecyclerView/Application...e/android/common/logger
LogFragment.java
LogFragment.java
LogFragment.java
86:104 
86:104 
86:104 
view
14 x 3 SwipeRefreshMultipleView...iperefreshmultipleviews
SwipeRefreshLayoutBasic/...swiperefreshlayoutbasic
RecyclerView/Application...le/android/recyclerview
MainActivity.java
MainActivity.java
MainActivity.java
75:89 
75:89 
75:89 
view
13 x 2 SwipeRefreshMultipleView...ple/android/common/view
SwipeRefreshLayoutBasic/...ple/android/common/view
SlidingTabLayout.java
SlidingTabLayout.java
236:253 
236:253 
view
12 x 4 SwipeRefreshMultipleView...e/android/common/logger
SwipeRefreshLayoutBasic/...e/android/common/logger
RecyclerView/Application...e/android/common/logger
MultiWindowPlayground/Ap...e/android/common/logger
LogWrapper.java
LogWrapper.java
LogWrapper.java
LogWrapper.java
52:74 
52:74 
52:74 
54:76 
view
11 x 2 ConstraintLayoutExamples...utexample/fragmentsdemo
ConstraintLayoutExamples...utexample/fragmentsdemo
FragmentExampleActivity.kt
FragmentExample2Activity.kt
75:86 
75:89 
view
9 x 3 SwipeRefreshMultipleView...iperefreshmultipleviews
SwipeRefreshLayoutBasic/...swiperefreshlayoutbasic
RecyclerView/Application...le/android/recyclerview
MainActivity.java
MainActivity.java
MainActivity.java
93:109 
93:109 
93:109 
view
8 x 4 SwipeRefreshMultipleView...e/android/common/logger
SwipeRefreshLayoutBasic/...e/android/common/logger
RecyclerView/Application...e/android/common/logger
MultiWindowPlayground/Ap...e/android/common/logger
LogView.java
LogView.java
LogView.java
LogView.java
125:134 
125:134 
125:134 
129:138 
view
8 x 2 SwipeRefreshMultipleView...ndroid/common/dummydata
SwipeRefreshLayoutBasic/...ndroid/common/dummydata
Cheeses.java
Cheeses.java
173:185 
173:185 
view
8 x 2 SwipeRefreshMultipleView...ple/android/common/view
SwipeRefreshLayoutBasic/...ple/android/common/view
SlidingTabLayout.java
SlidingTabLayout.java
289:298 
289:298 
view
7 x 2 SwipeRefreshMultipleView...ple/android/common/view
SwipeRefreshLayoutBasic/...ple/android/common/view
SlidingTabLayout.java
SlidingTabLayout.java
90:102 
90:102 
view
7 x 2 SwipeRefreshMultipleView...ple/android/common/view
SwipeRefreshLayoutBasic/...ple/android/common/view
SlidingTabLayout.java
SlidingTabLayout.java
157:165 
157:165 
view
7 x 2 SwipeRefreshMultipleView...ple/android/common/view
SwipeRefreshLayoutBasic/...ple/android/common/view
SlidingTabLayout.java
SlidingTabLayout.java
304:311 
304:311 
view
7 x 2 SwipeRefreshMultipleView...iperefreshmultipleviews
SwipeRefreshLayoutBasic/...swiperefreshlayoutbasic
SwipeRefreshMultipleViewsFragment.java
SwipeRefreshLayoutBasicFragment.java
208:219 
191:202 
view