File Complexity Overall
  • There are 280 files with units, with 24,204 lines of code.
    • 1 very complex files (McCabe index sum 251+; 1,656 lines of code)
    • 4 complex files (McCabe index sum 126-250; 3,764 lines of code)
    • 16 medium complex files (McCabe index sum 51-125; 5,131 lines of code)
    • 17 slightly complex files (McCabe index sum 26-50; 3,009 lines of code)
    • 242 simple files (McCabe index sum 1-25; 10,644 lines of code)
  • 197 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system6% | 15% | 21% | 12% | 43%
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
js100% | 0% | 0% | 0% | 0%
java0% | 17% | 23% | 14% | 44%
ts0% | 0% | 17% | 0% | 82%
pl0% | 0% | 0% | 0% | 100%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
frontend55% | 0% | 7% | 0% | 36%
analysis0% | 23% | 25% | 12% | 38%
server0% | 0% | 16% | 19% | 64%
common0% | 0% | 0% | 23% | 76%
ROOT0% | 0% | 0% | 0% | 100%
Most Complex Files (Top 50)

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
flame-graph.js
in frontend/src/components/jfr
1656 85 287 17 36
HeapDumpAnalyzerImpl.java
in analysis/heap-dump/impl/src/main/java/org/eclipse/jifa/hda/impl
1831 68 244 13 28
GCModel.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/model
828 86 202 24 19
JStackParser.java
in analysis/thread-dump/src/main/java/org/eclipse/jifa/tda/parser
696 25 136 20 34
GCEvent.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/event
409 60 126 31 12
AbstractPreUnifiedGCLogParser.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser
717 21 103 14 21
AnalysisApiArgumentResolverFactory.java
in server/src/main/java/org/eclipse/jifa/server/support
343 20 85 25 16
JFRAnalyzerImpl.java
in analysis/jfr/src/main/java/org/eclipse/jifa/jfr
378 23 78 21 19
EventAbnormalDetector.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/diagnoser
220 12 73 33 33
Model.java
in analysis/heap-dump/api/src/main/java/org/eclipse/jifa/hda/api
688 34 73 11 6
utils.ts
in frontend/src/components/gclog
227 17 73 32 27
RecordedEvent.java
in analysis/jfr/src/main/java/org/eclipse/jifa/jfr/model/jfr
274 21 69 25 27
UnifiedG1OrGenerationalGCLogParser.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser
239 13 62 26 13
GCLogUtil.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/util
255 13 61 24 13
CPUTimeExtractor.java
in analysis/jfr/src/main/java/org/eclipse/jifa/jfr/extractor
259 15 59 23 13
GCMemoryItem.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/event/eventInfo
162 18 58 36 8
PreUnifiedG1GCLogParser.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser
237 13 56 24 28
AbstractApiExecutor.java
in analysis/src/main/java/org/eclipse/jifa/analysis
317 21 56 18 13
FileServiceImpl.java
in server/src/main/java/org/eclipse/jifa/server/service/impl
377 24 56 15 7
G1GCModel.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/model
191 16 54 28 17
VmOptions.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/model/modeInfo
247 16 53 21 12
GlobalDiagnoser.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/diagnoser
240 15 47 20 7
PreUnifiedGenerationalGCLogParser.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser
198 11 46 23 16
Validate.java
in common/src/main/java/org/eclipse/jifa/common/util
140 40 46 33 2
WorkerServiceImpl.java
in server/src/main/java/org/eclipse/jifa/server/service/impl
350 11 43 12 11
UnifiedZGCLogParser.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser
226 12 40 18 11
UnifiedG1GCLogParser.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser
149 9 37 25 21
AbstractUnifiedGCLogParser.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser
139 11 37 27 8
ThreadDumpAnalyzer.java
in analysis/thread-dump/src/main/java/org/eclipse/jifa/tda
215 12 36 17 6
UserServiceImpl.java
in server/src/main/java/org/eclipse/jifa/server/service/impl
191 11 33 17 6
StorageServiceImpl.java
in server/src/main/java/org/eclipse/jifa/server/service/impl
294 16 32 11 8
GCLogParserFactory.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser
131 3 31 24 19
WallClockExtractor.java
in analysis/jfr/src/main/java/org/eclipse/jifa/jfr/extractor
133 8 30 23 8
CallSiteTree.java
in analysis/thread-dump/src/main/java/org/eclipse/jifa/tda/model
120 11 29 24 7
Snapshot.java
in analysis/thread-dump/src/main/java/org/eclipse/jifa/tda/model
89 4 29 33 23
UnifiedGenerationalGCLogParser.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/parser
105 7 27 26 17
SearchPredicate.java
in analysis/heap-dump/api/src/main/java/org/eclipse/jifa/hda/api
112 3 27 24 21
HeapDumpAnalysisApiExecutor.java
in analysis/heap-dump/provider/src/main/java/org/eclipse/jifa/hdp/provider
177 9 26 15 11
K8SWorkerScheduler.java
in server/src/main/java/org/eclipse/jifa/server/service/impl
179 5 25 14 14
EventVisitor.java
in analysis/jfr/src/main/java/org/eclipse/jifa/jfr/extractor
76 24 24 32 1
GCEventType.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/model
187 15 24 13 5
MemoryArea.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/event/eventInfo
60 2 24 40 23
util.ts
in frontend/src/components/threaddump
86 5 24 28 15
Context.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/fragment
95 8 23 24 11
GenerationalGCModel.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/model
71 5 23 32 8
SuggestionGenerator.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/diagnoser
91 10 22 24 3
CMSGCModel.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/model
92 9 22 24 10
GlobalExceptionHandler.java
in server/src/main/java/org/eclipse/jifa/server/controller
99 5 22 22 7
DimensionBuilder.java
in analysis/jfr/src/main/java/org/eclipse/jifa/jfr/request
109 21 21 19 1
ZGCModel.java
in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/model
123 13 21 17 9
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...