File Complexity Overall
  • There are 42 files with units, with 46,097 lines of code.
    • 12 very complex files (McCabe index sum 251+; 32,380 lines of code)
    • 12 complex files (McCabe index sum 126-250; 8,966 lines of code)
    • 11 medium complex files (McCabe index sum 51-125; 4,267 lines of code)
    • 1 slightly complex files (McCabe index sum 26-50; 283 lines of code)
    • 6 simple files (McCabe index sum 1-25; 201 lines of code)
  • 7 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system70% | 19% | 9% | <1% | <1%
Legend:
251+
126-250
51-125
26-50
1-25


explore: grouped by folders | grouped by complexity
File Complexity per Extension
251+
126-250
51-125
26-50
1-25
java70% | 19% | 9% | <1% | <1%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
library70% | 19% | 9% | <1% | <1%
Most Complex Files (Top 42)

The McCabe index of a file grows with its size: per 100 lines tells a large but plain file from a dense one, and most complex unit whether the complexity sits in one unit or is spread over many.

File# lines# unitsMcCabe index
(sum)
per 100
lines
most complex
unit
User.java
in library/src/main/java/com/theguardian/bridget/thrift
4303 524 910 21 17
Videos.java
in library/src/main/java/com/theguardian/bridget/thrift
4167 523 876 21 10
ListenToArticle.java
in library/src/main/java/com/theguardian/bridget/thrift
3780 452 816 22 10
LiveActivities.java
in library/src/main/java/com/theguardian/bridget/thrift
3434 380 768 22 17
Discussion.java
in library/src/main/java/com/theguardian/bridget/thrift
3247 375 739 23 24
Tag.java
in library/src/main/java/com/theguardian/bridget/thrift
2311 279 501 22 10
Notifications.java
in library/src/main/java/com/theguardian/bridget/thrift
2311 279 501 22 10
Commercial.java
in library/src/main/java/com/theguardian/bridget/thrift
2147 267 449 21 10
Acquisitions.java
in library/src/main/java/com/theguardian/bridget/thrift
1893 258 398 21 10
Audio.java
in library/src/main/java/com/theguardian/bridget/thrift
1883 256 384 20 8
Newsletters.java
in library/src/main/java/com/theguardian/bridget/thrift
1556 188 341 22 17
Environment.java
in library/src/main/java/com/theguardian/bridget/thrift
1348 175 277 21 10
Navigation.java
in library/src/main/java/com/theguardian/bridget/thrift
1144 168 228 20 4
Gallery.java
in library/src/main/java/com/theguardian/bridget/thrift
955 106 208 22 22
MatchNotifications.java
in library/src/main/java/com/theguardian/bridget/thrift
824 102 183 22 10
Image.java
in library/src/main/java/com/theguardian/bridget/thrift
658 52 166 25 34
Metrics.java
in library/src/main/java/com/theguardian/bridget/thrift
763 97 158 21 10
Analytics.java
in library/src/main/java/com/theguardian/bridget/thrift
761 97 157 21 10
AbTesting.java
in library/src/main/java/com/theguardian/bridget/thrift
760 94 153 20 10
Interactives.java
in library/src/main/java/com/theguardian/bridget/thrift
710 96 151 21 10
Epic.java
in library/src/main/java/com/theguardian/bridget/thrift
576 46 149 26 31
VideoSlot.java
in library/src/main/java/com/theguardian/bridget/thrift
576 48 149 26 31
Interaction.java
in library/src/main/java/com/theguardian/bridget/thrift
705 96 144 20 8
AdSlot.java
in library/src/main/java/com/theguardian/bridget/thrift
534 46 128 24 22
Rect.java
in library/src/main/java/com/theguardian/bridget/thrift
533 50 122 23 23
Topic.java
in library/src/main/java/com/theguardian/bridget/thrift
475 42 120 25 24
MetricFont.java
in library/src/main/java/com/theguardian/bridget/thrift
477 44 118 25 22
FootballMatch.java
in library/src/main/java/com/theguardian/bridget/thrift
394 40 98 25 17
VideoEvent.java
in library/src/main/java/com/theguardian/bridget/thrift
384 39 95 25 17
FootballTeam.java
in library/src/main/java/com/theguardian/bridget/thrift
384 38 94 24 17
MatchNotificationsAvailability.java
in library/src/main/java/com/theguardian/bridget/thrift
388 39 92 24 15
MaybeEpic.java
in library/src/main/java/com/theguardian/bridget/thrift
304 34 72 24 10
MaybeEmail.java
in library/src/main/java/com/theguardian/bridget/thrift
299 33 70 23 10
MetricPaint.java
in library/src/main/java/com/theguardian/bridget/thrift
287 35 62 22 8
Metric.java
in library/src/main/java/com/theguardian/bridget/thrift
342 33 61 18 7
DiscussionServiceResponse.java
in library/src/main/java/com/theguardian/bridget/thrift
283 28 49 17 5
MediaEvent.java
in library/src/main/java/com/theguardian/bridget/thrift
61 3 17 28 15
SignInScreenReferrer.java
in library/src/main/java/com/theguardian/bridget/thrift
34 3 8 24 6
SignInScreenReason.java
in library/src/main/java/com/theguardian/bridget/thrift
34 3 8 24 6
NativePlatform.java
in library/src/main/java/com/theguardian/bridget/thrift
25 3 5 20 3
PurchaseScreenReason.java
in library/src/main/java/com/theguardian/bridget/thrift
25 3 5 20 3
DiscussionNativeError.java
in library/src/main/java/com/theguardian/bridget/thrift
22 3 4 18 2
About This Analysis
  • File complexity is the sum of the McCabe indexes (conditional complexity) of the units (methods, functions...) in a file.
  • Files are classified in five categories based on that sum: 1-25 (simple files), 26-50 (slightly complex files), 51-125 (medium complex files), 126-250 (complex files), 251+ (very complex files). The default bands are five times the unit complexity bands, as a file is a group of units.
  • Only main code files with units are classified. Files without units (languages without unit analysis, or files without functions) have no complexity to measure and are left out rather than counted as simple.
  • A very complex file holds many decisions, which often means it has too many responsibilities: a candidate to split, and a place where changes need more testing.
Learn more...