apple / swift-xcode-playground-support
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
  • 26% duplication:
    • 6,043 cleaned lines of cleaned code (without empty lines, comments, and frequently duplicated constructs such as imports)
    • 1,597 duplicated lines
  • 365 duplicates
system26% (1,597 lines)
Duplication per Extension
swift28% (1,579 lines)
m14% (18 lines)
Duplication per Component (primary)
PlaygroundLogger/PlaygroundLoggerTests51% (821 lines)
Legacy/PlaygroundLogger21% (616 lines)
PlaygroundLogger/PlaygroundLogger8% (106 lines)
PlaygroundSupport/XCPlaygroundTests41% (33 lines)
PlaygroundSupport/PlaygroundSupportTests47% (21 lines)
Experimental/PlaygroundRuntime0% (0 lines)
PlaygroundLogger/PlaygroundLoggerTestHost_iOS0% (0 lines)
PlaygroundLogger/PlaygroundLoggerTestHost_tvOS0% (0 lines)
PlaygroundSupport/PlaygroundSupport0% (0 lines)
PlaygroundSupport/XCPlayground0% (0 lines)

Duplication Between Components (50+ lines)

G Legacy/PlaygroundLogger Legacy/PlaygroundLogger PlaygroundLogger/PlaygroundLoggerTests PlaygroundLogger/PlaygroundLoggerTests Legacy/PlaygroundLogger--PlaygroundLogger/PlaygroundLoggerTests 1100

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 365 duplicates...
Size#FoldersFilesLinesCode
128 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
81:292 (32%)
1097:1308 (12%)
view
69 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
517:613 (17%)
1527:1623 (6%)
view
53 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
297:373 (13%)
1312:1388 (4%)
view
45 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
18:79 (11%)
1034:1095 (4%)
view
44 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
378:445 (11%)
1392:1459 (4%)
view
36 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
PlaygroundRepresentation.swift
LegacyPlaygroundLoggerTests.swift
34:80 (65%)
786:832 (3%)
view
27 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
475:503 (6%)
1487:1515 (2%)
view
26 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderAPI.swift
LegacyPlaygroundLoggerTests.swift
19:50 (89%)
993:1024 (2%)
view
24 x 2 PlaygroundLogger/PlaygroundLoggerTests
PlaygroundLogger/PlaygroundLoggerTests
LegacyPlaygroundLoggerTests.swift
LegacyPlaygroundLoggerTests.swift
545:577 (2%)
586:618 (2%)
view
24 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
BytesStorage.swift
LegacyPlaygroundLoggerTests.swift
15:54 (72%)
711:750 (2%)
view
20 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
KeyedUnarchiver.swift
LegacyPlaygroundLoggerTests.swift
15:47 (100%)
840:872 (1%)
view
17 x 2 PlaygroundLogger/PlaygroundLoggerTests
PlaygroundLogger/PlaygroundLoggerTests
LogPolicyTests.swift
LogPolicyTests.swift
78:103 (4%)
438:463 (4%)
view
16 x 2 PlaygroundLogger/PlaygroundLogger/LegacySupport
PlaygroundLogger/PlaygroundLogger
LegacyEntrypoints.swift
LoggerEntrypoints.swift
110:137 (24%)
110:137 (21%)
view
15 x 2 PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLogger
LoggerEntrypoints.swift
LoggerEntrypoints.swift
28:54 (19%)
114:140 (19%)
view
15 x 2 PlaygroundLogger/PlaygroundLogger/LegacySupport
PlaygroundLogger/PlaygroundLogger/LegacySupport
LegacyEntrypoints.swift
LegacyEntrypoints.swift
45:71 (22%)
114:140 (22%)
view
15 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
PlaygroundRepresentation.swift
LegacyPlaygroundLoggerTests.swift
14:28 (27%)
770:784 (1%)
view
14 x 2 PlaygroundLogger/PlaygroundLogger/LegacySupport
PlaygroundLogger/PlaygroundLogger
LegacyEntrypoints.swift
LoggerEntrypoints.swift
114:137 (21%)
28:51 (18%)
view
14 x 2 PlaygroundLogger/PlaygroundLogger/LegacySupport
PlaygroundLogger/PlaygroundLogger
LegacyEntrypoints.swift
LoggerEntrypoints.swift
45:68 (21%)
114:137 (18%)
view
14 x 2 PlaygroundLogger/PlaygroundLogger/LegacySupport
PlaygroundLogger/PlaygroundLogger
LegacyEntrypoints.swift
LoggerEntrypoints.swift
45:68 (21%)
28:51 (18%)
view
13 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
TestCases.swift
LegacyPlaygroundLoggerTests.swift
510:525 (2%)
518:533 (1%)
view
Duplicated Units
The list of top 12 duplicated units.
See data for all 12 unit duplicates...
Size#FoldersFilesLinesCode
12 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
362:374 
1377:1389 
view
12 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
531:543 
1541:1553 
view
11 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
ExtensionUInt64.swift
LegacyPlaygroundLoggerTests.swift
47:58 
882:893 
view
27 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
517:546 
1527:1556 
view
8 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
41:49 
1057:1065 
view
8 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
165:173 
1181:1189 
view
7 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
ExtensionString.swift
LegacyPlaygroundLoggerTests.swift
74:81 
930:937 
view
7 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderAPI.swift
LegacyPlaygroundLoggerTests.swift
38:45 
1012:1019 
view
7 x 3 PlaygroundLogger/Playgro...eRepresentations/AppKit
PlaygroundLogger/Playgro...resentations/Foundation
PlaygroundLogger/Playgro...ueRepresentations/UIKit
NSBezierPath+KeyedArchiveOpaqueRepres...
NSAttributedString+KeyedArchiveOpaque...
UIBezierPath+KeyedArchiveOpaqueRepres...
22:29 
20:27 
22:29 
view
6 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
BytesStorage.swift
LegacyPlaygroundLoggerTests.swift
62:68 
758:764 
view
6 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
LoggerDecoderImpl.swift
LegacyPlaygroundLoggerTests.swift
597:603 
1607:1613 
view
6 x 2 Legacy/PlaygroundLogger/PlaygroundLogger
PlaygroundLogger/PlaygroundLoggerTests
PlaygroundRepresentation.swift
LegacyPlaygroundLoggerTests.swift
34:40 
786:792 
view