firebase / appquality-codelab-ios
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
  • 63% duplication:
    • 227 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 144 duplicated lines
  • 8 duplicates
system63% (144 lines)
Duplication per Extension
m70% (80 lines)
swift72% (64 lines)
Duplication per Component (primary)
ios-starter/objc-starter/AppQualityObjC66% (40 lines)
ios/objc/AppQualityObjC59% (40 lines)
ios-starter/swift-starter/AppQualitySwift80% (32 lines)
ios/swift/AppQualitySwift66% (32 lines)
ROOT0% (0 lines)

Duplication Between Components (50+ lines)

G ios-starter/objc-starter/AppQualityObjC ios-starter/objc-starter/AppQualityObjC ios/objc/AppQualityObjC ios/objc/AppQualityObjC ios-starter/objc-starter/AppQualityObjC--ios/objc/AppQualityObjC 80 ios-starter/swift-starter/AppQualitySwift ios-starter/swift-starter/AppQualitySwift ios/swift/AppQualitySwift ios/swift/AppQualitySwift ios-starter/swift-starter/AppQualitySwift--ios/swift/AppQualitySwift 64

Download: SVG DOT (open online Graphviz editor)

Open 3D force graph...

Show more details on duplication between components...
Longest Duplicates
The list of 8 longest duplicates.
See data for all 8 duplicates...
Size#FoldersFilesLinesCode
13 x 2 ios-starter/objc-starter/AppQualityObjC
ios/objc/AppQualityObjC
AQViewController.m
AQViewController.m
52:68 (29%)
59:75 (26%)
view
12 x 2 ios-starter/objc-starter/AppQualityObjC
ios/objc/AppQualityObjC
AQViewController.m
AQViewController.m
18:35 (27%)
18:35 (24%)
view
11 x 2 ios-starter/swift-starter/AppQualitySwift
ios/swift/AppQualitySwift
AQViewController.swift
AQViewController.swift
44:58 (32%)
52:66 (26%)
view
9 x 2 ios-starter/objc-starter/AppQualityObjC
ios/objc/AppQualityObjC
AQViewController.m
AQViewController.m
37:48 (20%)
40:51 (18%)
view
8 x 2 ios-starter/swift-starter/AppQualitySwift
ios/swift/AppQualitySwift
AQViewController.swift
AQViewController.swift
20:32 (23%)
20:32 (19%)
view
7 x 2 ios-starter/swift-starter/AppQualitySwift
ios/swift/AppQualitySwift
AQViewController.swift
AQViewController.swift
34:42 (20%)
37:45 (17%)
view
6 x 2 ios-starter/objc-starter/AppQualityObjC
ios/objc/AppQualityObjC
AQViewController.m
AQViewController.m
70:75 (13%)
79:84 (12%)
view
6 x 2 ios-starter/swift-starter/AppQualitySwift
ios/swift/AppQualitySwift
AQViewController.swift
AQViewController.swift
61:69 (17%)
71:79 (14%)
view