android / play-billing-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
  • 16% duplication:
    • 7,179 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,178 duplicated lines
  • 42 duplicates
system16% (1,178 lines)
Duplication per Extension
java23% (788 lines)
kt6% (188 lines)
ts21% (176 lines)
css10% (26 lines)
Duplication per Component (primary)
TrivialDriveJava/app/src/main29% (324 lines)
TrivialDriveKotlin/app/src/main29% (276 lines)
ClassyTaxiJava/app/src/main9% (188 lines)
ClassyTaxiAppKotlin/app/src/main9% (188 lines)
ClassyTaxiServer/src/controller/functions49% (128 lines)
ClassyTaxiServer/webapp6% (26 lines)
ClassyTaxiServer/src/play-billing10% (22 lines)
ClassyTaxiServer/src/play-billing/types18% (13 lines)
ClassyTaxiServer/src/play-billing/internal10% (13 lines)
ClassyTaxiServer/src0% (0 lines)
ClassyTaxiServer/src/controller0% (0 lines)
ClassyTaxiServer/src/model0% (0 lines)

Duplication Between Components (50+ lines)

G TrivialDriveJava/app/src/main TrivialDriveJava/app/src/main TrivialDriveKotlin/app/src/main TrivialDriveKotlin/app/src/main TrivialDriveJava/app/src/main--TrivialDriveKotlin/app/src/main 552 ClassyTaxiJava/app/src/main ClassyTaxiJava/app/src/main ClassyTaxiJava/app/src/main--TrivialDriveJava/app/src/main 96

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 42 duplicates...
Size#FoldersFilesLinesCode
81 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MakePurchaseAdapter.java
MakePurchaseAdapter.java
37:146 (100%)
37:146 (100%)
view
50 x 2 TrivialDriveJava/app/src...vialdrivesample/billing
TrivialDriveKotlin/app/s...vialdrivesample/billing
Security.java
Security.java
46:138 (100%)
46:138 (100%)
view
46 x 2 ClassyTaxiAppKotlin/app/...xample/subscriptions/ui
ClassyTaxiAppKotlin/app/...xample/subscriptions/ui
MainActivity.kt
TvMainActivity.kt
82:152 (36%)
56:126 (52%)
view
38 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MakePurchaseFragment.java
MakePurchaseFragment.java
53:102 (43%)
53:101 (43%)
view
31 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MakePurchaseFragment.java
MakePurchaseFragment.java
114:158 (35%)
113:157 (35%)
view
18 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MainActivity.java
MainActivity.java
82:110 (30%)
82:111 (31%)
view
17 x 2 ClassyTaxiJava/app/src/m.../classytaxijava/billing
TrivialDriveJava/app/src...vialdrivesample/billing
BillingClientLifecycle.java
BillingDataSource.java
185:202 (9%)
382:399 (3%)
view
15 x 2 ClassyTaxiJava/app/src/m.../classytaxijava/billing
TrivialDriveJava/app/src...vialdrivesample/billing
BillingClientLifecycle.java
BillingDataSource.java
248:262 (7%)
805:819 (3%)
view
15 x 2 ClassyTaxiAppKotlin/app/...xample/subscriptions/ui
ClassyTaxiAppKotlin/app/...xample/subscriptions/ui
MainActivity.kt
TvMainActivity.kt
222:246 (11%)
152:176 (17%)
view
15 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
GameFragment.java
GameFragment.java
45:69 (50%)
45:69 (50%)
view
15 x 2 ClassyTaxiJava/app/src/m...droid/classytaxijava/ui
ClassyTaxiJava/app/src/m...droid/classytaxijava/ui
SubscriptionBindingAdapter.java
SubscriptionBindingAdapter.java
154:170 (7%)
236:252 (7%)
view
14 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MainActivity.java
MainActivity.java
112:128 (23%)
113:128 (24%)
view
14 x 2 ClassyTaxiJava/app/src/m...droid/classytaxijava/ui
ClassyTaxiJava/app/src/m...droid/classytaxijava/ui
SubscriptionBindingAdapter.java
SubscriptionBindingAdapter.java
137:152 (6%)
219:234 (6%)
view
13 x 2 ClassyTaxiServer/src/play-billing/internal
ClassyTaxiServer/src/play-billing/types
purchases_impl.ts
purchases.ts
116:128 (10%)
56:68 (30%)
view
12 x 2 ClassyTaxiJava/app/src/m...a/data/network/firebase
ClassyTaxiJava/app/src/m...a/data/network/retrofit
FakeServerFunctions.java
ServerFunctionImpl.java
76:99 (5%)
76:112 (9%)
view
12 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MainActivity.java
MainActivity.java
51:66 (20%)
51:66 (21%)
view
12 x 2 ClassyTaxiAppKotlin/app/...xample/subscriptions/ui
ClassyTaxiAppKotlin/app/...xample/subscriptions/ui
MainActivity.kt
TvMainActivity.kt
204:215 (9%)
134:145 (13%)
view
11 x 2 ClassyTaxiServer/src/play-billing
ClassyTaxiServer/src/play-billing
PurchasesManager.ts
PurchasesManager.ts
47:61 (6%)
110:125 (6%)
view
10 x 2 ClassyTaxiJava/app/src/m...droid/classytaxijava/ui
TrivialDriveJava/app/src...d/trivialdrivesample/ui
SingleLiveEvent.java
SingleMediatorLiveEvent.java
58:76 (47%)
56:73 (52%)
view
10 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
GameFragment.java
GameFragment.java
74:90 (33%)
74:90 (33%)
view
Duplicated Units
The list of top 11 duplicated units.
See data for all 11 unit duplicates...
Size#FoldersFilesLinesCode
25 x 2 TrivialDriveJava/app/src...vialdrivesample/billing
TrivialDriveKotlin/app/s...vialdrivesample/billing
Security.java
Security.java
113:139 
113:139 
view
24 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MakePurchaseFragment.java
MakePurchaseFragment.java
127:155 
126:154 
view
22 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MakePurchaseFragment.java
MakePurchaseFragment.java
63:85 
63:85 
view
20 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MakePurchaseAdapter.java
MakePurchaseAdapter.java
102:122 
102:122 
view
18 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MakePurchaseAdapter.java
MakePurchaseAdapter.java
54:72 
54:72 
view
15 x 2 ClassyTaxiAppKotlin/app/...xample/subscriptions/ui
ClassyTaxiAppKotlin/app/...xample/subscriptions/ui
MainActivity.kt
TvMainActivity.kt
232:249 
162:179 
view
14 x 2 TrivialDriveJava/app/src...vialdrivesample/billing
TrivialDriveKotlin/app/s...vialdrivesample/billing
Security.java
Security.java
66:80 
66:80 
view
12 x 2 TrivialDriveJava/app/src...vialdrivesample/billing
TrivialDriveKotlin/app/s...vialdrivesample/billing
Security.java
Security.java
89:102 
89:102 
view
9 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MainActivity.java
MainActivity.java
120:129 
120:129 
view
6 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MakePurchaseAdapter.java
MakePurchaseAdapter.java
44:50 
44:50 
view
6 x 2 TrivialDriveJava/app/src...d/trivialdrivesample/ui
TrivialDriveKotlin/app/s...d/trivialdrivesample/ui
MakePurchaseAdapter.java
MakePurchaseAdapter.java
94:100 
94:100 
view