apple / swift
File Size

The distribution of size of files (measured in lines of code).

Intro
  • File size measurements show the distribution of size of files.
  • Files are classified in four categories based on their size (lines of code): 1-100 (very small files), 101-200 (small files), 201-500 (medium size files), 501-1000 (long files), 1001+(very long files).
  • It is a good practice to keep files small. Long files may become "bloaters", code that have increased to such gargantuan proportions that they are hard to work with.
Learn more...
File Size Overall
  • There are 9,830 files with 1,147,309 lines of code.
    • 231 very long files (571,540 lines of code)
    • 278 long files (188,839 lines of code)
    • 565 medium size files (180,865 lines of codeclsfd_ftr_w_mp_ins)
    • 600 small files (86,653 lines of code)
    • 8,156 very small files (119,412 lines of code)
49% | 16% | 15% | 7% | 10%
Legend:
1001+
501-1000
201-500
101-200
1-100


explore: zoomable circles | sunburst | 3D view
File Size per Extension
1001+
501-1000
201-500
101-200
1-100
cpp65% | 16% | 12% | 3% | 2%
h44% | 13% | 18% | 12% | 11%
swift19% | 19% | 18% | 11% | 31%
cmake28% | 28% | 18% | 17% | 8%
mm37% | 21% | 26% | 4% | 9%
py0% | 20% | 35% | 21% | 22%
c0% | 73% | 0% | 10% | 15%
m0% | 34% | 31% | 0% | 33%
yaml0% | 0% | 99% | 0% | <1%
el0% | 0% | 89% | 0% | 10%
inc0% | 0% | 37% | 45% | 17%
in0% | 0% | 0% | 78% | 21%
bash0% | 0% | 0% | 100% | 0%
d0% | 0% | 0% | 0% | 100%
rb0% | 0% | 0% | 0% | 100%
TXT0% | 0% | 0% | 0% | 100%
cfg0% | 0% | 0% | 0% | 100%
cmd0% | 0% | 0% | 0% | 100%
File Size per Logical Decomposition
primary
1001+
501-1000
201-500
101-200
1-100
lib65% | 14% | 12% | 4% | 2%
stdlib50% | 13% | 22% | 7% | 6%
include34% | 17% | 21% | 14% | 12%
tools44% | 25% | 14% | 9% | 5%
validation-test12% | 22% | 7% | 9% | 48%
benchmark18% | 19% | 25% | 16% | 19%
utils7% | 16% | 31% | 23% | 20%
unittests5% | 23% | 40% | 16% | 13%
cmake0% | 20% | 30% | 33% | 16%
SwiftCompilerSources0% | 0% | 42% | 17% | 40%
ROOT0% | 0% | 0% | 0% | 100%
Longest Files (Top 50)
File# lines# units
ScalarPropsData.h
in stdlib/public/stubs/Unicode/Apple
24675 -
ScalarPropsData.h
in stdlib/public/stubs/Unicode/Common
24647 -
CSSimplify.cpp
in lib/Sema
8591 80
ImportDecl.cpp
in lib/ClangImporter
7191 88
Decl.cpp
in lib/AST
6938 408
SILInstruction.h
in include/swift/SIL
6499 655
ParseDecl.cpp
in lib/Parse
6341 79
Refactoring.cpp
in lib/IDE
6195 279
CSApply.cpp
in lib/Sema
6185 89
ParseSIL.cpp
in lib/SIL/Parser
6164 88
GenericSignatureBuilder.cpp
in lib/AST
6095 173
CodeCompletion.cpp
in lib/IDE
6088 242
CSDiagnostics.cpp
in lib/Sema
5846 203
Deserialization.cpp
in lib/Serialization
5508 113
GenEnum.cpp
in lib/IRGen
5366 260
ASTPrinter.cpp
in lib/AST
5343 400
IRGenSIL.cpp
in lib/IRGen
5316 270
SILVerifier.cpp
in lib/SIL/Verifier
4896 239
TypeCheckProtocol.cpp
in lib/Sema
4867 68
Serialization.cpp
in lib/Serialization
4806 211
Type.cpp
in lib/AST
4630 187
SILGenApply.cpp
in lib/SILGen
4456 178
Dictionary.swift
in validation-test/stdlib
4414 43
TypeCheckAttr.cpp
in lib/Sema
4411 113
Metadata.cpp
in stdlib/public/runtime
4364 174
ConstraintSystem.cpp
in lib/Sema
4275 113
ASTContext.cpp
in lib/AST
4254 136
SILGenExpr.cpp
in lib/SILGen
4193 160
Decl.h
in include/swift/AST
4191 535
GenDecl.cpp
in lib/IRGen
4045 93
GenMeta.cpp
in lib/IRGen
4019 332
GenCall.cpp
in lib/IRGen
3922 160
swift-ide-test.cpp
in tools/swift-ide-test
3892 118
MinimalCollections.swift
in stdlib/private/StdlibCollectionUnittest
3716 2
Set.swift
in validation-test/stdlib
3698 23
Types.h
in include/swift/AST
3680 446
MiscDiagnostics.cpp
in lib/Sema
3674 58
Expr.h
in include/swift/AST
3669 619
ASTDumper.cpp
in lib/AST
3580 347
SILGenPoly.cpp
in lib/SILGen
3504 79
ClangImporter.cpp
in lib/ClangImporter
3493 121
SILGenLValue.cpp
in lib/SILGen
3455 174
DeserializeSIL.cpp
in lib/Serialization
3371 38
Metadata.h
in include/swift/ABI
3356 288
SILPrinter.cpp
in lib/SIL/IR
3355 284
SILFunctionType.cpp
in lib/SIL/IR
3272 116
Demangler.cpp
in lib/Demangling
3248 137
TypeCheckConcurrency.cpp
in lib/Sema
3141 85
ConstraintSystem.h
in include/swift/Sema
3140 197
TypeCheckType.cpp
in lib/Sema
3132 61
Files With Most Units (Top 20)
File# lines# units
SILInstruction.h
in include/swift/SIL
6499 655
Expr.h
in include/swift/AST
3669 619
Decl.h
in include/swift/AST
4191 535
Types.h
in include/swift/AST
3680 446
Decl.cpp
in lib/AST
6938 408
ASTPrinter.cpp
in lib/AST
5343 400
ASTDumper.cpp
in lib/AST
3580 347
GenMeta.cpp
in lib/IRGen
4019 332
Metadata.h
in include/swift/ABI
3356 288
SILPrinter.cpp
in lib/SIL/IR
3355 284
Remangler.cpp
in lib/Demangling
3079 281
Refactoring.cpp
in lib/IDE
6195 279
OldRemangler.cpp
in lib/Demangling
2303 273
IRGenSIL.cpp
in lib/IRGen
5316 270
GenEnum.cpp
in lib/IRGen
5366 260
CodeCompletion.cpp
in lib/IDE
6088 242
SILVerifier.cpp
in lib/SIL/Verifier
4896 239
CSFix.h
in include/swift/Sema
1935 215
Serialization.cpp
in lib/Serialization
4806 211
CSDiagnostics.cpp
in lib/Sema
5846 203
Files With Long Lines (Top 20)

There are 196 files with lines longer than 120 characters. In total, there are 594 long lines.

File# lines# units# long lines
profile-input.swift
in utils/parser-lib
1911 110 63
ObjectiveCBridging.swift
in benchmark/single-source
736 22 29
MigrationSupport.swift
in stdlib/public/core
481 - 27
SwiftObjectNSObject.m
in validation-test/stdlib/Inputs/SwiftObjectNSObject
597 5 26
cmake
Libdispatch.cmake
in cmake/modules
235 - 24
HTTP2StateMachine.swift
in benchmark/single-source
287 15 22
MinimalCollections.swift
in stdlib/private/StdlibCollectionUnittest
3716 2 17
Diff.h
in lib/Migrator
1750 74 16
cmake
AddSwiftStdlib.cmake
in stdlib/cmake/modules
2352 - 15
SIMDVector.swift
in stdlib/public/core
1019 - 15
SubstringTest.swift
in benchmark/single-source
208 3 14
Breadcrumbs.swift
in benchmark/single-source
378 14 10
RemoveWhere.swift
in benchmark/single-source
161 19 10
String.swift
in validation-test/stdlib
1831 17 9
Hash.swift
in benchmark/single-source
520 31 8
StringComparison.swift
in benchmark/single-source
702 2 7
ArrayAppend.swift
in benchmark/single-source
286 - 6
CodableTest.swift
in benchmark/single-source
115 5 6
NSStringConversion.swift
in benchmark/single-source
187 - 6
SwiftOnoneSupport.swift
in stdlib/public/SwiftOnoneSupport
235 41 6