android / architecture-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
  • 18% duplication:
    • 1,876 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 338 duplicated lines
  • 32 duplicates
system18% (338 lines)
Duplication per Extension
kt18% (338 lines)
Duplication per Component (primary)
app/src/androidTestMock/java/com/example/android/architecture/blueprints/todoapp/tasks42% (110 lines)
app/src/sharedTest/java/com/example/android/architecture/blueprints/todoapp/tasks36% (61 lines)
app/src/prod/java/com/example/android/architecture/blueprints/todoapp/data50% (27 lines)
app/src/mock/java/com/example/android/architecture/blueprints/todoapp/data60% (27 lines)
app/src/sharedTest/java/com/example/android/architecture/blueprints/todoapp/data9% (22 lines)
app/src/prod/java/com/example/android/architecture/blueprints/todoapp50% (18 lines)
app/src/mock/java/com/example/android/architecture/blueprints/todoapp41% (18 lines)
app/src/main/java/com/example/android/architecture/blueprints/todoapp/data8% (18 lines)
app/src/sharedTest/java/com/example/android/architecture/blueprints/todoapp/taskdetail24% (9 lines)
app/src/sharedTest/java/com/example/android/architecture/blueprints/todoapp/addedittask16% (9 lines)
app/src/sharedTest/java/com/example/android/architecture/blueprints/todoapp/statistics19% (7 lines)
app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks2% (6 lines)
app/src/main/java/com/example/android/architecture/blueprints/todoapp/taskdetail6% (6 lines)
app/src/main/java/com/example/android/architecture/blueprints/todoapp/statistics0% (0 lines)
app/src/main/java/com/example/android/architecture/blueprints/todoapp0% (0 lines)
app/src/main/java/com/example/android/architecture/blueprints/todoapp/util0% (0 lines)
app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask0% (0 lines)
app/src/sharedTest/java/com/example/android/architecture/blueprints/todoapp0% (0 lines)
app/src/sharedTest/java/com/example/android/architecture/blueprints/todoapp/util0% (0 lines)
app0% (0 lines)

Duplication Between Components (50+ lines)

G app/src/mock/java/com/example/android/architecture/blueprints/todoapp/data app/src/mock/java/com/example/android/architecture/blueprints/todoapp/data app/src/prod/java/com/example/android/architecture/blueprints/todoapp/data app/src/prod/java/com/example/android/architecture/blueprints/todoapp/data app/src/mock/java/com/example/android/architecture/blueprints/todoapp/data--app/src/prod/java/com/example/android/architecture/blueprints/todoapp/data 54

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 32 duplicates...
Size#FoldersFilesLinesCode
14 x 2 app/src/mock/java/com/ex...blueprints/todoapp/data
app/src/prod/java/com/ex...oapp/data/source/remote
FakeTasksRemoteDataSource.kt
TasksRemoteDataSource.kt
72:97 (31%)
91:116 (26%)
view
13 x 2 app/src/mock/java/com/ex...blueprints/todoapp/data
app/src/prod/java/com/ex...oapp/data/source/remote
FakeTasksRemoteDataSource.kt
TasksRemoteDataSource.kt
39:55 (28%)
48:64 (24%)
view
12 x 2 app/src/androidTestMock/...lueprints/todoapp/tasks
app/src/androidTestMock/...lueprints/todoapp/tasks
AppNavigationTest.kt
AppNavigationTest.kt
134:152 (11%)
164:182 (11%)
view
11 x 2 app/src/androidTestMock/...lueprints/todoapp/tasks
app/src/androidTestMock/...lueprints/todoapp/tasks
TasksActivityTest.kt
TasksActivityTest.kt
249:267 (7%)
280:298 (7%)
view
11 x 2 app/src/mock/java/com/ex...ture/blueprints/todoapp
app/src/prod/java/com/ex...ture/blueprints/todoapp
ServiceLocator.kt
ServiceLocator.kt
16:47 (25%)
17:48 (30%)
view
10 x 2 app/src/androidTestMock/...lueprints/todoapp/tasks
app/src/androidTestMock/...lueprints/todoapp/tasks
TasksActivityTest.kt
TasksActivityTest.kt
226:242 (6%)
257:273 (6%)
view
10 x 2 app/src/androidTestMock/...lueprints/todoapp/tasks
app/src/androidTestMock/...lueprints/todoapp/tasks
TasksActivityTest.kt
TasksActivityTest.kt
190:207 (6%)
220:236 (6%)
view
10 x 2 app/src/androidTestMock/...lueprints/todoapp/tasks
app/src/androidTestMock/...lueprints/todoapp/tasks
TasksActivityTest.kt
TasksActivityTest.kt
197:213 (6%)
288:304 (6%)
view
10 x 2 app/src/androidTestMock/...lueprints/todoapp/tasks
app/src/androidTestMock/...lueprints/todoapp/tasks
AppNavigationTest.kt
TasksActivityTest.kt
74:96 (9%)
82:105 (6%)
view
9 x 2 app/src/main/java/com/ex...nts/todoapp/data/source
app/src/main/java/com/ex...nts/todoapp/data/source
TasksDataSource.kt
TasksRepository.kt
37:53 (56%)
38:54 (56%)
view
9 x 2 app/src/sharedTest/java/...nts/todoapp/addedittask
app/src/sharedTest/java/...lueprints/todoapp/tasks
AddEditTaskFragmentTest.kt
TasksFragmentTest.kt
57:70 (16%)
71:84 (5%)
view
9 x 2 app/src/sharedTest/java/...ints/todoapp/taskdetail
app/src/sharedTest/java/...lueprints/todoapp/tasks
TaskDetailFragmentTest.kt
TasksFragmentTest.kt
49:62 (24%)
71:84 (5%)
view
9 x 2 app/src/sharedTest/java/...nts/todoapp/addedittask
app/src/sharedTest/java/...ints/todoapp/taskdetail
AddEditTaskFragmentTest.kt
TaskDetailFragmentTest.kt
57:70 (16%)
49:62 (24%)
view
8 x 2 app/src/mock/java/com/ex...blueprints/todoapp/data
app/src/sharedTest/java/...nts/todoapp/data/source
FakeTasksRemoteDataSource.kt
FakeRepository.kt
48:55 (17%)
59:66 (13%)
view
8 x 2 app/src/sharedTest/java/...lueprints/todoapp/tasks
app/src/sharedTest/java/...lueprints/todoapp/tasks
TasksFragmentTest.kt
TasksFragmentTest.kt
102:113 (4%)
203:212 (4%)
view
8 x 2 app/src/sharedTest/java/...lueprints/todoapp/tasks
app/src/sharedTest/java/...lueprints/todoapp/tasks
TasksFragmentTest.kt
TasksFragmentTest.kt
119:131 (4%)
182:191 (4%)
view
8 x 2 app/src/prod/java/com/ex...oapp/data/source/remote
app/src/sharedTest/java/...nts/todoapp/data/source
TasksRemoteDataSource.kt
FakeRepository.kt
57:64 (15%)
59:66 (13%)
view
7 x 2 app/src/sharedTest/java/...nts/todoapp/addedittask
app/src/sharedTest/java/...ints/todoapp/statistics
AddEditTaskFragmentTest.kt
StatisticsFragmentTest.kt
59:67 (12%)
57:65 (19%)
view
7 x 2 app/src/sharedTest/java/...ints/todoapp/statistics
app/src/sharedTest/java/...ints/todoapp/taskdetail
StatisticsFragmentTest.kt
TaskDetailFragmentTest.kt
57:65 (19%)
51:59 (18%)
view
7 x 2 app/src/androidTestMock/...lueprints/todoapp/tasks
app/src/androidTestMock/...lueprints/todoapp/tasks
TasksActivityTest.kt
TasksActivityTest.kt
197:207 (4%)
257:267 (4%)
view
Duplicated Units
The list of top 1 duplicated units.
See data for all 1 unit duplicate
Size#FoldersFilesLinesCode
12 x 2 app/src/prod/java/com/ex...oapp/data/source/remote
app/src/mock/java/com/ex...blueprints/todoapp/data
TasksRemoteDataSource.kt
FakeTasksRemoteDataSource.kt
56:68 
47:59 
view