android / architecture-components-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
  • 17% duplication:
    • 5,328 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 925 duplicated lines
  • 50 duplicates
system17% (925 lines)
Duplication per Extension
java30% (615 lines)
kt7% (226 lines)
pro100% (56 lines)
rs43% (28 lines)
Duplication per Component (primary)
PersistenceMigrationsSample46% (432 lines)
PersistenceContentProviderSample39% (145 lines)
PagingSample43% (129 lines)
WorkManagerSample15% (97 lines)
PagingWithNetworkSample7% (48 lines)
NavigationBasicSample14% (27 lines)
BasicSample3% (19 lines)
NavigationAdvancedSample15% (15 lines)
BasicRxJavaSample5% (7 lines)
ViewBindingSample17% (6 lines)
BasicRxJavaSampleKotlin0% (0 lines)
GithubBrowserSample0% (0 lines)
LiveDataSample0% (0 lines)
WorkManagerMultiprocessSample0% (0 lines)

Duplication Between Components (50+ lines)

G PagingSample PagingSample PersistenceContentProviderSample PersistenceContentProviderSample PagingSample--PersistenceContentProviderSample 258 PagingWithNetworkSample PagingWithNetworkSample WorkManagerSample WorkManagerSample PagingWithNetworkSample--WorkManagerSample 56

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 50 duplicates...
Size#FoldersFilesLinesCode
129 x 2 PagingSample/app/src/mai...xample/com/pagingsample
PersistenceContentProvid...tentprovidersample/data
CheeseDb.kt
Cheese.java
61:189 (85%)
72:200 (86%)
view
31 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
LocalUserDataSourceTest.java
LocalUserDataSourceTest.java
37:91 (93%)
37:91 (93%)
view
28 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UserRepository.java
UserRepository.java
25:79 (62%)
24:78 (63%)
view
28 x 2 PagingWithNetworkSample/benchmark
WorkManagerSample/benchmark
pro
benchmark-proguard-rules.pro
benchmark-proguard-rules.pro
1:37 (100%)
1:37 (100%)
view
20 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
LocalUserDataSourceTest.java
LocalUserDataSourceTest.java
52:88 (62%)
49:85 (66%)
view
16 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
MigrationTest.java
MigrationTest.java
51:79 (23%)
54:82 (19%)
view
16 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UserRepository.java
UserRepository.java
44:72 (44%)
45:73 (43%)
view
16 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UserRepository.java
UserRepository.java
52:78 (43%)
56:84 (35%)
view
15 x 2 NavigationAdvancedSample...vancedsample/listscreen
NavigationBasicSample/ap...ndroid/navigationsample
Leaderboard.kt
Leaderboard.kt
43:84 (39%)
42:82 (50%)
view
15 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UserRepository.java
UserRepository.java
51:76 (41%)
55:82 (34%)
view
14 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UsersDatabase.java
UsersDatabase.java
32:69 (53%)
32:69 (25%)
view
13 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UserRepository.java
UserRepository.java
87:103 (28%)
85:101 (29%)
view
12 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UserRepository.java
UserRepository.java
52:73 (32%)
55:78 (27%)
view
12 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UserRepository.java
UserRepository.java
51:72 (33%)
56:79 (26%)
view
10 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
User.java
User.java
39:58 (55%)
30:49 (76%)
view
10 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
LocalUserDataSourceTest.java
LocalUserDataSourceTest.java
70:88 (31%)
73:91 (30%)
view
10 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
LocalUserDataSourceTest.java
LocalUserDataSourceTest.java
73:91 (30%)
67:85 (33%)
view
10 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
LocalUserDataSourceTest.java
LocalUserDataSourceTest.java
70:88 (31%)
73:91 (30%)
view
10 x 2 WorkManagerSample/lib/sr...kground/workers/filters
WorkManagerSample/lib/sr...kground/workers/filters
GrayScaleFilterWorker.kt
WaterColorFilterWorker.kt
40:52 (50%)
40:51 (50%)
view
10 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
LocalUserDataSourceTest.java
LocalUserDataSourceTest.java
73:91 (30%)
67:85 (33%)
view
Duplicated Units
The list of top 6 duplicated units.
See data for all 6 unit duplicates...
Size#FoldersFilesLinesCode
23 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UserRepository.java
UserRepository.java
43:69 
44:70 
view
17 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
UserRepository.java
UserRepository.java
44:64 
43:63 
view
7 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
LocalUserDataSourceTest.java
LocalUserDataSourceTest.java
67:79 
67:79 
view
7 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
LocalUserDataSourceTest.java
LocalUserDataSourceTest.java
64:76 
61:73 
view
6 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
LocalUserDataSourceTest.java
LocalUserDataSourceTest.java
55:64 
55:64 
view
6 x 2 PersistenceMigrationsSam.../persistence/migrations
PersistenceMigrationsSam.../persistence/migrations
MigrationTest.java
MigrationTest.java
180:187 
189:196 
view