android / testing-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
  • 33% duplication:
    • 1,303 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 436 duplicated lines
  • 13 duplicates
system33% (436 lines)
Duplication per Extension
java26% (244 lines)
yml90% (122 lines)
html66% (63 lines)
kt5% (7 lines)
Duplication per Component (primary)
ui/espresso17% (124 lines)
bazelci90% (122 lines)
runner/AndroidTestOrchestratorSample100% (73 lines)
runner/AndroidJunitRunnerSample100% (73 lines)
ui/uiautomator85% (30 lines)
unit/BasicSample6% (7 lines)
unit/BasicSample-kotlinApp8% (7 lines)
unit/BasicUnitAndroidTest0% (0 lines)
ROOT0% (0 lines)
integration/ServiceTestRuleSample0% (0 lines)

Duplication Between Components (50+ lines)

G runner/AndroidJunitRunnerSample runner/AndroidJunitRunnerSample runner/AndroidTestOrchestratorSample runner/AndroidTestOrchestratorSample runner/AndroidJunitRunnerSample--runner/AndroidTestOrchestratorSample 146 ui/espresso ui/espresso ui/uiautomator ui/uiautomator ui/espresso--ui/uiautomator 85

Download: SVG DOT (open online Graphviz editor)

Open 3D force graph...

Show more details on duplication between components...
Longest Duplicates
The list of 13 longest duplicates.
See data for all 13 duplicates...
Size#FoldersFilesLinesCode
62 x 2 runner/AndroidJunitRunne...ndroidjunitrunnersample
runner/AndroidTestOrches...dtestorchestratorsample
CalculatorActivity.java
CalculatorActivity.java
33:136 (100%)
33:136 (100%)
view
40 x 2 bazelci
bazelci
buildkite-pipeline.yml
buildkite-pipeline.yml
7:46 (29%)
53:92 (29%)
view
21 x 2 bazelci
bazelci
buildkite-pipeline.yml
buildkite-pipeline.yml
95:115 (15%)
117:137 (15%)
view
19 x 2 ui/espresso/BasicSample/...ng/espresso/BasicSample
ui/uiautomator/BasicSamp...uiautomator/BasicSample
MainActivity.java
MainActivity.java
31:63 (86%)
31:63 (90%)
view
18 x 2 ui/espresso/WebBasicSample/app/src/main/assets
ui/espresso/WebBasicSample/app/src/main/assets
web_form.html
web_form_response.html
40:59 (34%)
37:56 (41%)
view
14 x 2 ui/espresso/BasicSampleB...esso/basicsamplebundled
ui/uiautomator/BasicSamp...uiautomator/BasicSample
MainActivity.java
MainActivity.java
33:57 (63%)
31:55 (66%)
view
14 x 2 ui/espresso/WebBasicSample/app/src/main/assets
ui/espresso/WebBasicSample/app/src/main/assets
web_form.html
web_form_response.html
24:37 (26%)
24:37 (32%)
view
14 x 2 ui/espresso/BasicSample/...ng/espresso/BasicSample
ui/espresso/BasicSampleB...esso/basicsamplebundled
MainActivity.java
MainActivity.java
31:55 (63%)
33:57 (63%)
view
14 x 2 ui/espresso/BasicSample/...ng/espresso/BasicSample
ui/espresso/BasicSampleB...esso/basicsamplebundled
ShowTextActivity.java
ShowTextActivity.java
30:58 (100%)
30:58 (100%)
view
11 x 2 runner/AndroidJunitRunne...ndroidjunitrunnersample
runner/AndroidTestOrches...dtestorchestratorsample
Calculator.java
Calculator.java
24:55 (100%)
24:55 (100%)
view
11 x 2 ui/espresso/BasicSampleB...esso/basicsamplebundled
ui/uiautomator/BasicSamp...uiautomator/BasicSample
ShowTextActivity.java
ShowTextActivity.java
36:58 (78%)
36:58 (78%)
view
11 x 2 ui/espresso/BasicSample/...ng/espresso/BasicSample
ui/uiautomator/BasicSamp...uiautomator/BasicSample
ShowTextActivity.java
ShowTextActivity.java
36:58 (78%)
36:58 (78%)
view
7 x 2 unit/BasicSample-kotlinA...unittesting/BasicSample
unit/BasicSample/app/src...unittesting/BasicSample
EmailValidator.kt
EmailValidator.java
45:51 (36%)
33:39 (31%)
view
Duplicated Units
The list of top 6 duplicated units.
See data for all 6 unit duplicates...
Size#FoldersFilesLinesCode
30 x 2 runner/AndroidTestOrches...dtestorchestratorsample
runner/AndroidJunitRunne...ndroidjunitrunnersample
CalculatorActivity.java
CalculatorActivity.java
87:118 
87:118 
view
7 x 3 ui/uiautomator/BasicSamp...uiautomator/BasicSample
ui/espresso/BasicSample/...ng/espresso/BasicSample
ui/espresso/BasicSampleB...esso/basicsamplebundled
MainActivity.java
MainActivity.java
MainActivity.java
40:50 
40:50 
42:52 
view
7 x 2 runner/AndroidTestOrches...dtestorchestratorsample
runner/AndroidJunitRunne...ndroidjunitrunnersample
CalculatorActivity.java
CalculatorActivity.java
45:52 
45:52 
view
7 x 2 runner/AndroidTestOrches...dtestorchestratorsample
runner/AndroidJunitRunne...ndroidjunitrunnersample
CalculatorActivity.java
CalculatorActivity.java
71:78 
71:78 
view
6 x 3 ui/uiautomator/BasicSamp...uiautomator/BasicSample
ui/espresso/BasicSample/...ng/espresso/BasicSample
ui/espresso/BasicSampleB...esso/basicsamplebundled
ShowTextActivity.java
ShowTextActivity.java
ShowTextActivity.java
37:47 
37:47 
37:47 
view
6 x 2 runner/AndroidTestOrches...dtestorchestratorsample
runner/AndroidJunitRunne...ndroidjunitrunnersample
CalculatorActivity.java
CalculatorActivity.java
131:137 
131:137 
view